#include <bits/stdc++.h>
using namespace std;
#define maxn 100005
#define ll long long int
ll n, k;
vector<int> chess[maxn];
void solve_k0(){
ll minimo = 999999;
for(int i = 1; i < n; i++){
if(n % i != 0) continue;
int test = i*i;
minimo = min(minimo, ((n*n/test)/2)*test);
}
cout << minimo << endl;
}
int block(ll number, ll siz){
return ((n-1)/siz + 1)%2;
}
ll solve_square(ll siz){
ll cont = 0;
for(int i = 1; i <= n; i++){
ll cont_errado = 0, cont_certo = 0;
for(int j = 0; j < chess[i].size(); j++){
//if((i+j)%2 == chess[i][j]) cont_errado++;
int row = chess[i][j];
if(block(i, siz) == block(row, siz)) cont_certo++;
else cont_errado++;
}
cont += cont_errado + n/2 + block(i) - cont_certo;
}
return min(cont, n*n - cont);
}
int main(){
memset(chess, 0, sizeof chess);
cin >> n >> k;
if(k == 0) solve_k0();
else{
for(int i = 0; i < k; i++){
int x, y, l, m;
cin >> x >> y;
cin >> l >> m; //8)
chess[x].push_back(y);
}
ll minimo = 999999999999;
for(ll i = 1; i < n; i++){
if(i%n) minimo = min(minimo, solve_square(i));
}
}
return 0;
}
Compilation message
chessboard.cpp: In function 'long long int solve_square(long long int)':
chessboard.cpp:23:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
23 | for(int j = 0; j < chess[i].size(); j++){
| ~~^~~~~~~~~~~~~~~~~
chessboard.cpp:29:38: error: too few arguments to function 'int block(long long int, long long int)'
29 | cont += cont_errado + n/2 + block(i) - cont_certo;
| ^
chessboard.cpp:16:5: note: declared here
16 | int block(ll number, ll siz){
| ^~~~~