洛谷p4885灭顶之灾

时间:2022-07-16 06:36:08

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做法。。。