제출 #44572

#제출 시각아이디문제언어결과실행 시간메모리
44572heonIzbori (COCI17_izbori)C++11
60 / 80
2756 ms65536 KiB
#include<bits/stdc++.h>

using namespace std;

int n,m,k;
int grid[105][15];

int winner(){
	int winner[20];
	memset(winner,0,sizeof(winner));
	for(int i = 0; i < n; i++){
		winner[grid[i][0]]++;
	}
	int win,winval = 0;
	for(int i = 1; i <= m; i++){
		if(winner[i] > winval){
			winval = winner[i];
			win = i;
		}
	}
	return win;
}

int currwin(int mask){
	int winner[20];
	memset(winner,0,sizeof(winner));
	for(int i = 0; i < n; i++){
		for(int j = 0; j < m; j++){
			if(mask & (1 << (grid[i][j]-1))) continue;
			winner[grid[i][j]]++;
			break;
		}
	}
	int winval = 0, win;
	for(int i = 1; i <= m; i++){
		if(winner[i] > winval){
			winval = winner[i];
			win = i;
		}
	}
	return win;
}

int main(){
	cin >> n >> m >> k;
	for(int i = 0; i < n; i++){
		for(int j = 0; j < m; j++){
			cin >> grid[i][j]; 
		}
	}
	int currentwinner = winner();
	int izbaceni = 0;
	int fullmask = 1 << m;
	queue <pair<int,int>> q;
	q.push(make_pair(fullmask + (1 << (currentwinner-1)),1));
	if(currentwinner == k) goto kr;
	while(!q.empty()){
		auto node = q.front();
		q.pop();
		int currmask = node.first;
		if(currwin(currmask) == k){
			izbaceni = node.second;
			break;
		}
		for(int i = 0; i < m; i++){
			if(i+1 != k && !(currmask & (1 << i))){
				q.push(make_pair((currmask + (1 << i)),node.second+1));
			}
		}
	}
	kr:;
	cout << currentwinner << endl << izbaceni;
}

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

izbori.cpp: In function 'int winner()':
izbori.cpp:21:9: warning: 'win' may be used uninitialized in this function [-Wmaybe-uninitialized]
  return win;
         ^~~
izbori.cpp: In function 'int currwin(int)':
izbori.cpp:41:9: warning: 'win' may be used uninitialized in this function [-Wmaybe-uninitialized]
  return win;
         ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...