Advertisement
stetsyk

Untitled

Jan 1st, 2015
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.22 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <map>
  5. using namespace std;
  6. const int N = 10000;
  7. int n, k;
  8. int a[N / 10][N / 10];
  9. int b[N / 10][N / 10];
  10. int tmp[N + 1];
  11. int used[N + 1];
  12. int main()
  13. {
  14.     cin >> n >> k;
  15.     for(int i = 0; i < n; ++i)
  16.     {
  17.         for(int j = 0; j < n; ++j)
  18.         {
  19.             cin >> a[i][j];
  20.         }
  21.     }
  22.     for(int i = 0; i < n; ++i)
  23.         for(int j = 0; j < n; ++j)
  24.             b[i][j] = a[i][j];
  25.     vector<bool> prime (N+1, true);
  26.     prime[0] = prime[1] = false;
  27.     for (int i=2; i<=N; ++i)
  28.         if (prime[i])
  29.             if (i * 1ll * i <= N)
  30.                 for (int j=i*i; j<=N; j+=i)
  31.                     prime[j] = false;
  32.     for(int i = 0; i < k; ++i){
  33.         int cur = N + 1;
  34.         for(int j = N - i; j >= 0; j -= k){
  35.             if(prime[j]){
  36.                 tmp[j] = cur;
  37.                 cur = j;
  38.             }
  39.             else{
  40.                 tmp[j] = cur;
  41.             }
  42.         }
  43.     }
  44.     for(int i = 0; i < n; ++i){
  45.         for(int j = 0; j < n; ++i){
  46.             if(i == j || i == n - j - 1){
  47.                 used[a[i][j]]++;
  48.             }
  49.         }
  50.     }
  51.     for(int i = 0; i < n; ++i){
  52.         int j = i;
  53.         if(!prime[a[i][j]] || used[a[i][j]] > 1){
  54.             used[a[i][j]]--;
  55.             while(tmp[a[i][j]] <= N && used[a[i][j]]){
  56.                 a[i][j] = tmp[a[i][j]];
  57.             }
  58.             if(!prime[a[i][j]] || used[a[i][j]]){
  59.                 cout << "no" << endl;
  60.                 return 0;
  61.             }
  62.             used[a[i][j]]++;
  63.         }
  64.     }
  65.     for(int i = 0; i < n; ++i){
  66.         int j = n - i - 1;
  67.         if(!prime[a[i][j]] || used[a[i][j]] > 1){
  68.             used[a[i][j]]--;
  69.             while(tmp[a[i][j]] <= N && used[a[i][j]]){
  70.                 a[i][j] = tmp[a[i][j]];
  71.             }
  72.             if(!prime[a[i][j]] || used[a[i][j]]){
  73.                 cout << "no" << endl;
  74.                 return 0;
  75.             }
  76.             used[a[i][j]]++;
  77.         }
  78.     }
  79.     vector<pair<int, int> > ans;
  80.     for(int i = 0; i < n; ++i){
  81.         for(int j = 0; j < n; ++j){
  82.             if(a[i][j] != b[i][j]){
  83.                 ans.push_bacl()
  84.             }
  85.         }
  86.     }
  87.     return 0;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement