제출 #347025

#제출 시각아이디문제언어결과실행 시간메모리
347025andriiChessboard (IZhO18_chessboard)C++14
100 / 100
1016 ms15596 KiB
// -- // #include <bits/stdc++.h> #define pll pair<ll, ll> #define ppll pair<pll, pll> #define x first #define y second using namespace std; typedef long long ll; const ll N = 1e5+228; ppll a[N]; vector<pll> add[N], del[N]; ll res, n, k; inline void ch(ll m) __attribute__((always_inline)); inline void ch(ll m){ ll bob=0, bow=0; //wbw //bwb ll no[2]={0}; bool fl=0; ll kk=0; for(ll i = 1;i<=n;i++, kk++){ for(auto &j : add[i]){ ll s = j.x, e = j.y; --s, e--; ll bs = s/m, be = e/m, bse = (bs+1)*m-1, bes = (be)*m; if(bs==be) no[bs&1] += e-s+1; else if(bs+1==be){ no[bs&1] += bse-s+1; no[be&1] += e-bes+1; }else{ no[bs&1] += bse-s+1; no[be&1] += e-bes+1; bs++, be--; ll kb = (be-bs+1)/2; no[bs&1] += (be-bs+1-kb)*m; no[(bs&1)^1] += kb*m; } } if(((i-1)/m)&1){ bow+=no[0], bob+=no[1]; }else{ bob+=no[0], bow+=no[1]; } for(auto &j : del[i]){ ll s = j.x, e = j.y; --s, e--; ll bs = s/m, be = e/m, bse = (bs+1)*m-1, bes = (be)*m; if(bs==be) no[bs&1] -= e-s+1; else if(bs+1==be){ no[bs&1] -= bse-s+1; no[be&1] -= e-bes+1; }else{ no[bs&1] -= bse-s+1; no[be&1] -= e-bes+1; bs++, be--; ll kb = (be-bs+1)/2; no[bs&1] -= (be-bs+1-kb)*m; no[(bs&1)^1] -= kb*m; } } } ll bln = n/m; ll mbb = (bln/2)*m*n+((bln&1) ? (bln/2)+1 : 0)*m*m; ll v1 = (mbb-bob)+bow; ll v2 = bob+(n*n-mbb-bow); if(v1<res) res=v1; if(v2<res) res=v2; } signed main(){ cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(0); cin >> n >> k; for(ll i =0 ;i<k;i++){ cin >> a[i].x.x >> a[i].x.y >> a[i].y.x >> a[i].y.y; add[a[i].x.y].push_back({a[i].x.x, a[i].y.x}); del[a[i].y.y].push_back({a[i].x.x, a[i].y.x}); } res=n*n; for(ll i = 1;i*i<=n;i++){ if(n%i) continue; ch(i); if(i>1) ch(n/i); } cout<<res; }

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

chessboard.cpp: In function 'void ch(ll)':
chessboard.cpp:19:10: warning: unused variable 'fl' [-Wunused-variable]
   19 |     bool fl=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...