3 条题解
-
3赵青海 (huhe) LV 7 SU @ 2021-8-7 18:39:46
C++ :
#include<bits/stdc++.h> #define ll long long #define inf 0x3f3f3f3f using namespace std; const int N=1e6+5; int n; ll a[N]; int lowbit(int x) { return x&(-x); } void add(int x) { for (int i=x;i<=n;i+=lowbit(i)) a[i]++; } ll sum(int x) { // cout<<x<<endl; ll s=0; for (int i=x;i>=1;i-=lowbit(i)) s+=a[i]; return s; } int main() { while(scanf("%d",&n)!=EOF) { n*=n; ll ans1=0,ans2=0; int x; memset(a,0,sizeof(a)); for (int i=1;i<=n;i++) { scanf("%d",&x); if (x) { ans1+=sum(n)-sum(x); add(x); } } memset(a,0,sizeof(a)); for (int i=1;i<=n;i++) { scanf("%d",&x); if (x) { ans2+=sum(n)-sum(x); add(x); } } if ((ans1%2)==(ans2%2)) printf("TAK\n"); else printf("NIE\n"); } return 0; }
-
02024-5-28 16:44:44@
#include<bits/stdc++.h> #define ll long long #define inf 0x3f3f3f3f using namespace std; const int N=1e6+5; int n; ll a[N]; int lowbit(int x) { return x&(-x); } void add(int x) { for (int i=x;i<=n;i+=lowbit(i)) a[i]++; } ll sum(int x) { // cout<<x<<endl; ll s=0; for (int i=x;i>=1;i-=lowbit(i)) s+=a[i]; return s; } int main() { while(scanf("%d",&n)!=EOF) { n*=n; ll ans1=0,ans2=0; int x; memset(a,0,sizeof(a)); for (int i=1;i<=n;i++) { scanf("%d",&x); if (x) { ans1+=sum(n)-sum(x); add(x); } } memset(a,0,sizeof(a)); for (int i=1;i<=n;i++) { scanf("%d",&x); if (x) { ans2+=sum(n)-sum(x); add(x); } } if ((ans1%2)==(ans2%2)) printf("TAK\n"); else printf("NIE\n"); } return 0; } //钟鼎皓
-
02022-10-15 19:45:30@
#include <cstring> #include <algorithm> using namespace std; typedef long long LL; const int N = 250000; int c[N], temp[N]; LL merge_sort(int l, int r, int a[]) { if(l >= r) return 0; int mid = l + r >> 1, i = l, j = mid + 1, k = 0; LL res = merge_sort(l, mid, a) + merge_sort(mid + 1, r, a); while(i <= mid && j <= r) { if(a[i] <= a[j]) temp[k++] = a[i++]; else { res += mid - i + 1; temp[k++] = a[j++]; } } while(i <= mid) temp[k++] = a[i++]; while(j <= r) temp[k++] = a[j++]; for(int i = l, j = 0; i <= r; i++, j++) a[i] = temp[j]; return res; } int main() { int n; while(cin >> n && n) { int a[N], b[N]; for(int i = 0, j = 0; i < n * n; i++) { cin >> c[i]; if(c[i]) a[j++] = c[i]; } for(int i = 0, j = 0; i < n * n; i++) { cin >> c[i]; if(c[i]) b[j++] = c[i]; } LL res1 = merge_sort(0, n * n - 1, a); memset(temp, 0, sizeof temp); LL res2 = merge_sort(0, n * n - 1, b); memset(temp, 0, sizeof temp); if((res1 % 2) == (res2 % 2)) puts("TAK"); else puts("NIE"); } return 0; }
- 1
信息
- ID
- 20
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 120
- 已通过
- 88
- 上传者