Submission #1349056

#TimeUsernameProblemLanguageResultExecution timeMemory
1349056Faisal_SaqibPlus Minus (BOI17_plusminus)C++17
0 / 100
0 ms344 KiB
#include <iostream>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
ll powmod(ll a,ll b)
{
	ll p=1;
	while(b)
	{
		if(b&1)p=(p*a)%mod;
		b>>=1;
		a=(a*a)%mod;
	}
	return p;
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	ll n,m,k;
	cin>>n>>m>>k;
	ll ans=0;
	if(n==1)
	{
		cout<<powmod(2,m-k)<<endl;
	}
	else if(m==1)
	{
		cout<<powmod(2,n-k)<<endl;
	}
	else
	{
		int x[k],y[k];
		char c[k],a[2][2];
		for(int i=0;i<k;i++)cin>>c[i]>>x[i]>>y[i],x[i]--,y[i]--;
		// 2<=n,m
		for(int mk=0;mk<(1<<4);mk++)
		{
			a[0][0]=((mk&1)?'+':'-');
			a[0][1]=((mk&2)?'+':'-');
			a[1][0]=((mk&4)?'+':'-');
			a[1][1]=((mk&8)?'+':'-');
			bool fl=((a[0][0]=='+')+(a[0][1]=='+')+(a[1][0]=='+')+(a[1][1]=='+') == 2); // only 2 + and 2 -
			for(int i=0;i<k;i++)
			{
				if(a[x[i]%2][y[i]%2]!=c[i])
				{
					fl=0;
				}
			}
			ans+=fl;
		}
		cout<<ans<<endl;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...