Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
26921 liuyile 【BJ】T1 C++ 运行超时 20 1000 MS 166236 KB 2541 2024-02-27 13:42:41

Tests(4/20):


#include<bits/stdc++.h> //#define int long long #define endl "\n" using namespace std; short pre[310][310][310]; short rkd[90300][310],rku[90300][310]; int ALL[100030]; int LEN,len[310]; int a[310][310]; int b[310][310]; int n,m,q,tp; inline int rkdn(int x){ return upper_bound(ALL+1,ALL+LEN+1,x)-ALL-1; } inline int rkup(int x){ return lower_bound(ALL+1,ALL+LEN+1,x)-ALL; } signed main(){ //freopen("bath.in","r",stdin); //freopen("bath.out","w",stdout); ios::sync_with_stdio(0); cout.tie(0); cin>>n>>m>>q>>tp; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++) cin>>a[i][j],b[i][j]=a[i][j],ALL[++LEN]=a[i][j]; sort(b[i]+1,b[i]+m+1); len[i]=unique(b[i]+1,b[i]+m+1)-b[i]-1; for(int j=1;j<=m;j++){ a[i][j]=lower_bound(b[i]+1,b[i]+len[i]+1,a[i][j])-b[i]; memcpy(pre[j][i],pre[j-1][i],sizeof(pre[i][j])); pre[j][i][a[i][j]]++; } for(int j=1;j<=m;j++) for(int k=1;k<=m+1;k++) pre[j][i][k]+=pre[j][i][k-1]; b[i][0]=-1; b[i][len[i]+1]=2e9; } sort(ALL+1,ALL+LEN+1); LEN=unique(ALL+1,ALL+LEN+1)-ALL-1; for(int i=1;i<=n;i++){ int it=0; for(int j=1;j<=LEN;j++){ while(b[i][it]<ALL[j]) it++; rku[j][i]=it; } it=0; for(int j=1;j<=LEN;j++){ while(b[i][it]<=ALL[j]) it++; rkd[j][i]=it-1; } } int lst=0; while(q--){ int xl,xr,yl,yr,wl,wr; cin>>xl>>yl>>xr>>yr>>wl>>wr; if(tp){ xl^=lst; xl=(xl-1+n)%n+1; xr^=lst; xr=(xr-1+n)%n+1; yl^=lst; yl=(yl-1+n)%n+1; yr^=lst; yr=(yr-1+n)%n+1; wl^=lst; wr^=lst; } if(xl>xr)swap(xl,xr); if(yl>yr)swap(yl,yr); if(wl>wr)swap(wl,wr); wl=rkup(wl); wr=rkdn(wr); int res=0; for(int i=xl;i<=xr;i++){ int L=rku[wl][i]; int R=rkd[wr][i]; res+=pre[yr][i][R]-pre[yl-1][i][R]; if(L)res+=pre[yl-1][i][L-1]-pre[yr][i][L-1]; } cout<<(lst=res)<<endl; } cout.flush(); return 0; } /* 5 5 5 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 1 3 3 7 13 3 3 5 5 14 24 1 1 5 5 1 25 2 1 2 5 6 9 5 4 3 2 25 1 */


测评信息: