Submission #3188606
Source Code Expand
#include <bits/stdc++.h> #include <algorithm> using namespace std; int n,a[30000],P[30001]; pair<int,int> pr[30000]; void init(int N, int A[]) { n=N; for(int i=0;i<n;i++){ a[i]=A[i]; pr[i].first=A[i]; pr[i].second=i; } sort(pr,pr+n); int bit[1<<16]={0}; P[0]=0; for(int i=0;i<n;i++){ P[i+1]=P[i]; int c=n-a[i]+1,p=c-1; while(p){ P[i+1]+=bit[p]; p-=p&(-p); } bit[c]++; while(c<1<<16){ c+=c&(-c); bit[c]++; } } } void update(int i, int x) { int k=0; for(int j=0;j<i;j++){ if(a[j]<=a[i]&&a[j]>x){ k++; } else if(a[j]>a[i]&&a[j]<=x){ k--; } } P[i+1]+=k; for(int j=i+1;j<n;j++){ if(a[i]<=a[j]&&x>a[j]){ k++; } else if(a[i]>a[j]&&x<=a[j]){ k--; } P[j+1]+=k; } int l=lower_bound(pr,pr+n,make_pair(a[i],i))-pr; pair<int,int> e=make_pair(x,i); if(a[i]<x){ int j; for(j=l;j+1<n&&pr[j+1]<e;j++){ pr[j]=pr[j+1]; } pr[j]=e; } else{ int j; for(j=l;0<=j-1&&e<pr[j-1];j--){ pr[j]=pr[j-1]; } pr[j]=e; } a[i]=x; } int train(int p, int q) { int A; if(n<=5000){ A=0; int bit[1<<16]={0}; for(int i=q;i>=p;i--){ int c=a[i],p=c-1; while(p){ A+=bit[p]; p-=p&(-p); } bit[c]++; while(c<1<<16){ c+=c&(-c); bit[c]++; } } } else{ A=P[q+1]-P[p]; int k=0; for(int i=0;i<n;i++){ if(pr[i].second<p){ A-=k; } else if(pr[i].second<=q){ k++; } } } return A; }
Submission Info
Submission Time | |
---|---|
Task | C - 魔法の訓練 (Magical Training) |
User | luogu_bot1 |
Language | C++ (GCC 5.4.1) |
Score | 0 |
Code Size | 1654 Byte |
Status | CE |
Compile Error
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 4 has invalid symbol index 11 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 5 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 6 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 7 has invalid symbol index 13 /usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 8 has invalid symbol ...