Run ID Author Problem Lang Verdict Score Time Memory Code Length Submit Time
68059 Alphys 书架 C++ Runtime Error 0 0 MS 240 KB 2234 2023-01-23 13:21:56

Tests(0/10):


#include<bits/stdc++.h> using namespace std; const int MAXN = 4e5+10; const int MAXB = 400; int b,len,n,m,K; int col[MAXB][40],mui[MAXB],add[MAXB],c[MAXN]; inline int id(int x){ return (x-1)/len+1; } inline int L(int x){ return (x-1)*b+1; } inline int R(int x){ return x*b; } inline void rebuild(int x){ int l=L(x),r=R(x); for(int i=0;i<K;i++)col[x][i]=0; for(int i=l;i<=r;i++){ c[i]=(c[i]*mui[x]+add[x])%K; col[x][c[i]]++; } mui[x]=1;add[x]=0; } int main(){ freopen("book.in","r",stdin); freopen("book.out","w",stdout); scanf("%d%d%d", &n, &m, &K); b=ceil(sqrt(n)),len=(n-1)/b+1; for(int i=1;i<=n;i++)scanf("%d", c+i); for(int j=1;j<=b;j++) for(int k=L(j);k<=R(j)&&k<=n;k++)col[j][c[k]]++; for(int i=1;i<=b;i++)mui[i]=1; while(m--){ int op,l,r; scanf("%d", &op); if(op==1){ int a,b; scanf("%d%d%d%d", &l, &r, &a, &b); int lb=id(l)+1,rb=id(r)-1; if(lb>rb){ int ib=id(l); rebuild(ib); for(int i=l;i<=r;i++){ col[ib][c[i]]--; c[i]=(c[i]*a+b)%K; col[ib][c[i]]++; } continue; } rebuild(lb-1); rebuild(rb+1); for(int i=l;i<L(lb);i++){ col[lb-1][c[i]]--; c[i]=(c[i]*a+b)%K; col[lb-1][c[i]]++; } for(int i=R(rb)+1;i<=r;i++){ col[rb+1][c[i]]--; c[i]=(c[i]*a+b)%K; col[rb+1][c[i]]++; } for(int i=lb;i<=rb;i++){ mui[i]=(mui[i]*a)%K; add[i]=(add[i]*a)%K; add[i]=(add[i]+b)%K; for(int j=0;j<K;j++) col[i][(j*a+b)*K]+=col[i][j]; } } if(op==2){ scanf("%d%d", &l, &r); int lb=id(l)+1,rb=id(r)-1; int cnt[30],ans=0; memset(cnt,0,sizeof(cnt)); if(lb>rb){ int ib=id(l); rebuild(ib); for(int i=l;i<=r;i++){ if(cnt[c[i]]==0)ans++; cnt[c[i]]++; } printf("%d\n", ans); continue; } rebuild(lb-1); rebuild(rb+1); for(int i=l;i<L(lb);i++){ if(cnt[c[i]]==0)ans++; cnt[c[i]]++; } for(int i=R(rb)+1;i<=r;i++){ if(cnt[c[i]]==0)ans++; cnt[c[i]]++; } for(int i=lb;i<=rb;i++){ for(int j=0;j<K;j++){ if(cnt[j]==0&&col[i][j]!=0)ans++; cnt[j]+=col[i][j]; } } printf("%d\n", ans); } } return 0; }


Judgement Protocol: