제출 #137980

#제출 시각아이디문제언어결과실행 시간메모리
137980vardan__02Chessboard (IZhO18_chessboard)C++14
70 / 100
491 ms2028 KiB
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstring>
#include <string>
#include <vector>
#include <cstdio>
#include <queue>
#include <deque>
#include <stack>
#include <cmath>
#include <list>
#include <set>
#include <map>
using namespace std;
typedef long long ll;
#define MP make_pair
#define PB push_back
ll n,k,p,u,ans,i,j,v,x[100005],y[100005],ans1,ans2,t,q;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>k;
    for(i=1;i<=k;i++)
    {
        cin>>x[i]>>y[i]>>x[i]>>y[i];
        if(x[i]%2==y[i]%2)
            u++;
        else
            v++;
    }
    if(n%2==0)
        p=n*n/2;
    else
        p=n*n/2+1;
    q=n*n/2;
    ans=min(p-u+v,q-v+u);
    for(j=2;j<=n;j++)
    {
        if(n%j==0)
        {
            u=0;
            v=0;
            t=n/j;
            for(i=1;i<=k;i++)
            {
                ll g,h;
                if(x[i]%t==0)
                    g=x[i]/t;
                else
                    g=x[i]/t+1;
                if(y[i]%t==0)
                    h=y[i]/t;
                else
                    h=y[i]/t+1;
                if(h%2==g%2)
                    u++;
                else
                    v++;
            }
            q=n/j;
            if(j%2==1)
            ans1=j*j/2+1;
            else
            ans1=j*j/2;
            ans1=ans1*q*q;
            ans1=ans1-u+v;
            ans2=j*j/2;
            ans2=ans2*q*q;
            ans2=ans2-v+u;
            ans=min(ans,ans2);
            ans=min(ans,ans1);
        }
    }
    cout<<ans<<endl;
    return 0;
}
#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...