Submission #338398

#TimeUsernameProblemLanguageResultExecution timeMemory
338398boykutChessboard (IZhO18_chessboard)C++14
16 / 100
34 ms3180 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long

int isprime(int n) {
   if (n == 2) return false;
   for (int i = 2; i < n; i++) {
      if (n % i == 0) return false;
   }
   return true;
}

signed main() {
   ios::sync_with_stdio(0);
   cin.tie(0);
   int n, k;
   cin >> n >> k;
   if (k == 0) {
      int ans = -1;
      for (int i = 2; i <= n; i++) {
         if (n % i == 0) {
            int m = n / i;
            
            int res = ((n * n) / (m * m)) / 2 * (m * m);
            
            if (ans == -1 || ans > res)
               ans = res;
         }
      }
      cout << ans << '\n';
      return 0;
   }
   bool ok = true;
   vector <int> x1(k), x2(k), y1(k), y2(k);
   for (int i = 0; i < k; i++) {
      cin >> x1[i] >> y1[i] >> x2[i] >> y2[i];
      if (x1[i] != x2[i] || y1[i] != y2[i])
         ok = false;
   }
   if (ok && isprime(n)) {      
      int cnt[] = {0, 0};
      for (int i = 0, x, y; i < k; i++) {
         x = x1[i]; y = y1[i];
         cnt[(x + y) % 2]++;
      }
      if (n == 2) {
         cout << min(2 - cnt[0] + cnt[1], 2 - cnt[1] + cnt[0]);
      } else {
         cout << min(n * n / 2 + 1 - cnt[0] + cnt[1], n * n / 2 - cnt[1] + cnt[0]);
      }
      return 0;
   }
   if (ok && n <= 1000) {
      vector <vector <int> > mas(n,vector <int> (n, 0));
     
   }
   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...