Submission #490794

#TimeUsernameProblemLanguageResultExecution timeMemory
490794infertechno2Chessboard (IZhO18_chessboard)C++14
70 / 100
224 ms7256 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const ll Size=1e5+1;

class point2d{
public:
    ll x,y;
};

point2d top[Size],bot[Size];
pair<ll,ll> ans[Size];

void solve(){
    ll n,k;
    cin>>n>>k;
    for(ll i=0;i<=n;i++){
        ans[i].first=1e18;
        ans[i].second=1e18;
    }
    for(ll i=0;i<k;i++){
        cin>>top[i].y>>top[i].x>>bot[i].y>>bot[i].x;
        top[i].y--;
        top[i].x--;
        bot[i].y--;
        bot[i].x--;
    }
    for(ll i=n/2;i>=1;i--){
        if(n%i==0){
            if((n/i)%2==1){
                ans[i].first=((n/i/2)*(n/i/2+1)*i*i)*2;
                ans[i].second=ans[i].first+i*i;
            }else{
                ans[i].first=n*n/2;
                ans[i].second=n*n/2;
            }
        }
    }
    ll best_ans=1e18;
    for(ll i=1;i<=n/2;i++){
        if(ans[i].first!=1e18){
            for(ll j=0;j<k;j++){
                if(((top[j].x/i)+(top[j].y/i))%2==1){
                    ans[i].first--;
                    ans[i].second++;
                }else{
                    ans[i].first++;
                    ans[i].second--;
                }
            }
            best_ans=min(best_ans,min(ans[i].first,ans[i].second));
        }
    }
    cout<<best_ans<<endl;
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    ll t=1;
    while(t--){
        solve();
    }
    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...