제출 #44564

#제출 시각아이디문제언어결과실행 시간메모리
44564heonIzbori (COCI17_izbori)C++11
58 / 80
3 ms928 KiB
#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;

vector <int> v1;
vector <int> v2;

int arr[101][16];
int arr2[16];
int arr3[16];
bool anotherOne[16];
int zup,kan,k;
int sol = 0;
int num = 0;
int rj = 0,rj2 = 0;
int winner = 0,winner2 = 0;
int thei = 0;
int lowest = 999;

bool game = true;

int sortiraj(){
	
	int help1 = 0;
	int help2 = 0;
	
	for(int i = 0; i < v1.size()-1; i++){
		for(int j = i+1; j < v1.size(); j++){
			if(v1[i] > v1[j]){
				help1 = v1[i];
				v1[i] = v1[j];
				v1[j] = help1;
				
				help2 = v2[i];
				v2[i] = v2[j];
				v2[j] = help2;
			}
		}
	}
}

int Solution(){
	
	for(int i = 0; i < kan; i++){
		if(!anotherOne[i]) sol++;
	}
	
	return sol;
	
}

int findWinner(){
	
	for(int i = 0; i < kan; i++){
		arr3[i] = 0;
	}
	
	for(int i = 0; i < zup; i++){
		for(int j = 0; j < kan; j++){
			if(anotherOne[arr[i][j]-1]){
				arr3[arr[i][j]-1]++;
				break;
			}		
		}
	}
	
	rj2 = 0;
	winner2 = 0;
	
	for(int i = 0; i < kan; i++){
		if(arr3[i] > rj2){
			rj2 = arr3[i];
			winner2 = i+1;
		}
	}
	
	return winner2;
	
}


int main(){
	
	cin >> zup >> kan >> k;
	
	for(int i = 0; i < kan; i++){
		arr2[i] = 0;
		arr3[i] = 0;
		anotherOne[i] = true;
	}
	
	for(int i = 0; i < zup; i++){
		for(int j = 0; j < kan; j++){
			cin >> arr[i][j];
		}
		arr2[arr[i][0]-1]++;
		arr3[arr[i][0]-1]++;
	}
	
	for(int i = 0; i < zup; i++){
		for(int j = 0; j < kan; j++){
			if(arr[i][j] == k){
				v1.push_back(j);
				v2.push_back(i);
				break;
			}
		}
	}
	
	sortiraj();
	
	while(game){
			
		for(int i = 0; i < kan; i++){
			anotherOne[i] = true;
		}
		
		for(int j = 0; j < kan; j++){
			if(arr[v2[0]][j] == k){
				break;
			}
			anotherOne[arr[v2[0]][j]-1] = false;
		}
		
		if(findWinner() == k){
			game = false;
		}
		
		v1.erase(v1.begin());
		v2.erase(v2.begin());
				
	}
	
	for(int i = 0; i < kan; i++){
		if(arr2[i] > rj){
			rj = arr2[i];
			winner = i+1;
		}
	}
	
	cout << winner << endl << Solution();
	
	
}

컴파일 시 표준 에러 (stderr) 메시지

izbori.cpp: In function 'int sortiraj()':
izbori.cpp:29:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < v1.size()-1; i++){
                 ~~^~~~~~~~~~~~~
izbori.cpp:30:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j = i+1; j < v1.size(); j++){
                    ~~^~~~~~~~~~~
izbori.cpp:42:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
#Verdict Execution timeMemoryGrader output
Fetching results...