제출 #342715

#제출 시각아이디문제언어결과실행 시간메모리
342715koketsuChessboard (IZhO18_chessboard)C++14
16 / 100
32 ms492 KiB
#include <bits/stdc++.h> #define pb push_back #define LL long long #define Kultivator ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define int LL using namespace std; const LL Mxn = 1e6 + 7; const LL Mod = 1e9 + 7; const LL Inf = 1e14 + 7; bool Prime(int N){ bool Used = false; for(int i = 2; i <= sqrt(N); i++){ if(N % i == 0){ Used = true; break; } } return Used; } bool Get(int x, int y, int d){ return (x / d + y / d) % 2; } void Ans1(int N){ int Ans = Mxn; for(int i = 1; i < N; i++){ if(N % i == 0){ Ans = min(Ans, (N * N) / (2 * i * i) * (i * i)); } } cout << Ans; } void Ans2(int N, int K){ LL Cnt1 = 0, Cnt2 = 0; for(int i = 1, x1, y1, x2, y2; i <= K; i++){ cin >> x1 >> y1 >> x2 >> y2; bool Num = Get(x2, y2, 1); if(!Num){ Cnt1++; } else { Cnt2++; } } cout << min(N * N / 2 - Cnt2 + Cnt1, N * N / 2 + 1 - Cnt1 + Cnt2); } void Ans3(int N, int K){ int Ans = LONG_MAX; vector <int> F; vector <pair <int, int>> P(N, {0, 0}); for(int i = 1; i <= sqrt(N); i++){ if(N % i == 0){ F.pb(i); if(N / i != i && i > 1){ F.pb(N / i); } } } for(int i = 1, x1, y1, x2, y2; i <= K; i++){ cin >> x1 >> y1 >> x2 >> y2; for(auto i : F){ if(((x1+i-1)/i+(y1+i-1)/i) % 2){ P[i].first++; } else { P[i].second++; } } } for(auto i : F){ Ans = min(Ans, ((N * N) / (2 * i * i)) + (i * i) + P[i].first - P[i].second); Ans = min(Ans, ((N * N) / (2 * i * i)) - P[i].first + P[i].second); } cout << Ans; } signed main(){ Kultivator; LL N, K; cin >> N >> K; if(!K){ Ans1(N); } else if(!Prime(N)){ Ans2(N, K); } else { Ans3(N, K); } }
#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...