60做法
#include<bits/stdc++.h> using namespace std; long long a[50000],b[50000]; long long flag,fl,qus[50000000],t=1,ans,p; int main() { long long n,m,s,q,y1,y2,xx,yy; cin>>n>>m>>s>>q; long long i,j; for(i=1;i<=s;i++) cin>>a[i]>>b[i]; for(i=1;i<=q;i++) cin>>qus[i]; for(i=1;i<=m;i++) { flag=1; for(j=1;j<=s;j++){ if((a[j]+i-1)%m==0) y1=(a[j]+i-1)/m; else y1=(a[j]+i-1)/m+1; if((b[j]+i-1)%m==0) y2=(b[j]+i-1)/m; else y2=(b[j]+i-1)/m+1; if(y1!=y2) { flag=0; break; } } if(flag==1) { fl++; p=i; } } if(fl==0) { cout<<"Impossible!"; return 0; } if(fl>1) { cout<<"Uncertain!"; return 0; } if(fl==1) for(j=1;j<=q;j++){ if((qus[j]+p-1)%m==0) { yy=m; xx=(qus[j]+p-1)/m; } else { yy=(qus[j]+p-1)%m; xx=(qus[j]+p-1)/m+1; } if(xx<1||yy<1||xx>n||yy>m) xx=yy=0; if(j==1) ans=xx^yy; else ans=ans^xx^yy; } cout<<ans; return 0; }
蒟蒻能力有限 没有ac做法。。。