제출 #1323635

#제출 시각아이디문제언어결과실행 시간메모리
1323635boclobanchatPlus Minus (BOI17_plusminus)C++20
100 / 100
96 ms9816 KiB
#include<bits/stdc++.h> using namespace std; const long long mod=1e9+7; long long poww(long long n,long long m) { long long res=n,ans=1; while(m) { if(m&1) ans=ans*res%mod; res=res*res%mod,m/=2; } return ans; } map<int,int> mpx,mpy; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,m,k; cin>>n>>m>>k; bool e1=true,e2=true,e3=true,e4=true; int cn=n,cm=m; for(int i=1;i<=k;i++) { int x,y; char c; cin>>c>>x>>y; bool ck=(c=='+'); e1&=((x+y)%2==ck); e2&=((x+y)%2!=ck); if(!mpx[x]) cn--,mpx[x]=(y+ck)%2+1; else if(mpx[x]!=(y+ck)%2+1) e3=false; if(!mpy[y]) cm--,mpy[y]=(x+ck)%2+1; else if(mpy[y]!=(x+ck)%2+1) e4=false; } long long ans=0; if(e3) ans=(ans+poww(2,cn))%mod; if(e4) ans=(ans+poww(2,cm))%mod; if(e1) ans=(ans+mod-1)%mod; if(e2) ans=(ans+mod-1)%mod; cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...