Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <iostream>
- #include <vector>
- #include <string>
- using namespace std;
- int main(){
- int n;
- int m;
- cin >> n;
- cin >> m;
- int matrix[n][n];
- for(int i = 0; i < n; i++){
- for(int j = 0; j < n; j++){
- matrix[i][j] = 0;
- }
- }
- for(int i = 0; i < m; i++){
- int p;
- string order;
- vector<int> used;
- cin >> p;
- cin >> order;
- for(int j = order.size()-1; j >= 0; j--){
- int index = (int) order[j] - 65;
- for(int k = 0; k < used.size(); k++){
- matrix[index][used[k]] += p;
- }
- used.push_back(index);
- }
- }
- for(int i = 0; i < n; i++){
- vector<int> can_beat;
- vector<int> cant_beat;
- for(int j = 0; j < n; j++){
- if(i == j) continue;
- if(matrix[i][j] > matrix[j][i]){
- can_beat.push_back(j);
- }
- else{
- cant_beat.push_back(i);
- }
- }
- char cur_letter = (char) i+65;
- if(cant_beat.size() == 0){
- cout << cur_letter << ": can win" << endl;
- break;
- }
- if(can_beat.size() == 0){
- cout << cur_letter << ": can't win" << endl;
- break;
- }
- while(true){
- vector<int> new_can_beat;
- int new_cant_beat;
- for(int a = 0; a < can_beat.size(); a++){
- for(int b = cant_beat.size()-1; b >= 0; b--){
- if(matrix[a][b] > matrix[b][a]){
- can_beat.push_back(b);
- cant_beat.pop_back();
- }
- }
- }
- new_cant_beat = cant_beat.size();
- if(new_cant_beat == 0){
- cout << cur_letter << ": can win" << endl;
- break;
- }
- if(new_can_beat.size() == 0){
- cout << cur_letter << ": can't win" << endl;
- break;
- }
- can_beat.clear();
- for(int c = 0; c < new_can_beat.size(); c++){
- can_beat.push_back(new_can_beat[c]);
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement