Submission #494779

#TimeUsernameProblemLanguageResultExecution timeMemory
494779levsog2004Chessboard (IZhO18_chessboard)C++14
0 / 100
213 ms3468 KiB
#include <iostream> #include <iomanip> #include <fstream> #include <algorithm> #include <cstring> #include <string> #include <vector> #include <queue> #include <deque> #include <stack> #include <cmath> #include <list> #include <set> #include <map> using namespace std; typedef long long ll; const ll N = 2000004; ll n, m, l, k, t, x,ans=N*N, y,dp[N]; pair<ll, ll> a[N]; int check(int n, int m, int x, int y) { x /= m; y /= m; if (x + y % 2 == 0) { return 1; } else return 0; } int main() { for (int i = 2; i <= 100005; ++i) dp[i] = i * i / 2; for (int i = 3; i <= 100005; ++i) { for (int j = 1; j*j <= i; ++j) { if(i%j==0) dp[i] = min(ll(dp[i/j] * (j*j)), dp[i]); } } cin >> n >> m; for (int i = 0; i < m; ++i) { cin >> a[i].first >> a[i].second; cin >> x >> x; } x = 0; ans = dp[n]; if (m != 0) for (int i = 1; i*i <= n; ++i) { if (n%i == 0) { for (int j = 0; j < m; ++j) { x += check(n, i, a[j].first - 1, a[j].second - 1); } ans = min(x, dp[n / i] - x); } x = 0; } 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...