tjut 3600

    xiaoxiao2022-06-24  28

    #include<stdio.h> #define SIZE_N 90010 int ary[2][SIZE_N]; int sum,len; void reverseNum(int l,int h,int idx) { int i,j,k; int mid,idxt; idxt = 1 - idx; if(l == h) { ary[1][l] = ary[0][l]; return ; } mid = (l + h) / 2; reverseNum(l, mid, idxt); reverseNum(mid+1, h, idxt); for(i = j = l,k = mid+1;i <= mid && k <= h;) { if(ary[idx][i] < ary[idx][k]) { ary[idxt][j++] = ary[idx][i]; sum += k - mid - 1; i ++; } else { ary[idxt][j++] = ary[idx][k]; k ++; } } for(i;i <= mid;i ++) { ary[idxt][j++] = ary[idx][i]; sum += h - mid; } for(k;k <= h;k ++) { ary[idxt][j++] = ary[idx][k]; } } int main() { int n; int i; while(scanf("%d",&n),n != 0) { len = n * n; for(i = 0;i < len;i ++) { scanf("%d",&ary[0][i]); if(ary[0][i] == 0) { if(!(n & 1)) { sum = (n - i / n - 1); } else { sum = 0; } i --; len --; } } if(n == 1) { puts("YES"); continue; } reverseNum(0, len-1, 0); if(sum & 1) { puts("NO"); } else { puts("YES"); } } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1123687.html

    最新回复(0)