Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <map>
- using namespace std;
- const int N = 10000;
- int n, k;
- int a[N / 10][N / 10];
- int b[N / 10][N / 10];
- int tmp[N + 1];
- int used[N + 1];
- int main()
- {
- cin >> n >> k;
- for(int i = 0; i < n; ++i)
- {
- for(int j = 0; j < n; ++j)
- {
- cin >> a[i][j];
- }
- }
- for(int i = 0; i < n; ++i)
- for(int j = 0; j < n; ++j)
- b[i][j] = a[i][j];
- vector<bool> prime (N+1, true);
- prime[0] = prime[1] = false;
- for (int i=2; i<=N; ++i)
- if (prime[i])
- if (i * 1ll * i <= N)
- for (int j=i*i; j<=N; j+=i)
- prime[j] = false;
- for(int i = 0; i < k; ++i){
- int cur = N + 1;
- for(int j = N - i; j >= 0; j -= k){
- if(prime[j]){
- tmp[j] = cur;
- cur = j;
- }
- else{
- tmp[j] = cur;
- }
- }
- }
- for(int i = 0; i < n; ++i){
- for(int j = 0; j < n; ++i){
- if(i == j || i == n - j - 1){
- used[a[i][j]]++;
- }
- }
- }
- for(int i = 0; i < n; ++i){
- int j = i;
- if(!prime[a[i][j]] || used[a[i][j]] > 1){
- used[a[i][j]]--;
- while(tmp[a[i][j]] <= N && used[a[i][j]]){
- a[i][j] = tmp[a[i][j]];
- }
- if(!prime[a[i][j]] || used[a[i][j]]){
- cout << "no" << endl;
- return 0;
- }
- used[a[i][j]]++;
- }
- }
- for(int i = 0; i < n; ++i){
- int j = n - i - 1;
- if(!prime[a[i][j]] || used[a[i][j]] > 1){
- used[a[i][j]]--;
- while(tmp[a[i][j]] <= N && used[a[i][j]]){
- a[i][j] = tmp[a[i][j]];
- }
- if(!prime[a[i][j]] || used[a[i][j]]){
- cout << "no" << endl;
- return 0;
- }
- used[a[i][j]]++;
- }
- }
- vector<pair<int, int> > ans;
- for(int i = 0; i < n; ++i){
- for(int j = 0; j < n; ++j){
- if(a[i][j] != b[i][j]){
- ans.push_bacl()
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement