Submission #43883

#TimeUsernameProblemLanguageResultExecution timeMemory
43883TenuunChessboard (IZhO18_chessboard)C++11
0 / 100
92 ms652 KiB
#include<bits/stdc++.h>

using namespace std;

int main(){
	int n, k, x, y, x1, y1, res=INT_MAX;
	cin >> n >> k;
	vector<int>fac;
	map<int, int>map;
	for(int i=1; i<n; i++){
		if(n%i==0){
			fac.push_back(i);
		}
	}
	if(k==0){
		int res;
		int i=fac.size()-1;
		if(n/fac[i]%2){	
			res=(n*n-fac[i]*fac[i])/2;	
		}
		else{
			res=(n*n)/2;
		}
		cout << res;
		return 0;
	}
	for(int j=0; j<k; j++){
		cin >> x >> y >> x1 >> y1;
		for(int i=0; i<fac.size(); i++){
			if((x%(2*fac[i])>=1 && x%(2*fac[i])<=fac[i] && y%(2*fac[i])<=fac[i]&&y%(2*fac[i])>=1) ||((x%(2*fac[i])==0 || x%(2*fac[i])>fac[i]) && (y%(2*fac[i])>fac[i]||y%(2*fac[i])==0)) )map[i+1]++;
		}
	}
	int i=0;
	for (auto it=map.begin(); it!=map.end(); ++it){
		int res1, res2;
		//cout << it->first << it->second << endl;
		if(n/fac[i]%2){	
			res1=(n*n-fac[i]*fac[i])/2+fac[i]*fac[i]-it->second+k-it->second;
			res2=it->second+(n*n-fac[i]*fac[i])/2-(k-it->second);
			res2=n*n-res1;
			cout << it->second << " " << res1 << " " << res2 << endl;	
		}
		else{
			res1=(n*n)/2-it->second+k-it->second;
			res2=n*n-res1;
		}
		res=min(res, res1);
		res=min(res, res2);
		i++;
	}
	cout << res;
    return 0;
}

Compilation message (stderr)

chessboard.cpp: In function 'int main()':
chessboard.cpp:29:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0; i<fac.size(); i++){
                ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...