为什么本地和在线IDE能过却RE
查看原帖
为什么本地和在线IDE能过却RE
716372
lujunxuan123楼主2023/10/17 17:55
#include<bits/stdc++.h>
using namespace std;
map<string,int> f;
int m,n,p,i,len[1010],xiong,w,huang[1010],j,flag;
string jj[1010],fk[1010],tday,name,name2,say,st,today[8]={"","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
void pd(int guilty,int day){
	int i,j,w;
	for(i=1;i<=m;i++)huang[i]=-1;
	for(i=1;i<=p;i++){
		name="";say="";
		for(j=0;fk[i][j]!=':';j++)name=name+fk[i][j];
//		cout<<name<<'\n';
		w=j;
		for(j=w+2;j<len[i];j++)say=say+fk[i][j];
		if(say=="I am guilty."){
			if(f[name]==guilty){
				if(huang[f[name]]==-1||huang[f[name]]==1)huang[f[name]]=1;
				else{
					flag=0;
					return ;
				}
			}
			else{
				if(huang[f[name]]==-1||huang[f[name]]==0)huang[f[name]]=0;
				else{
					flag=0;
					return ;
				}
			}
			continue;
		}
		if(say=="I am not guilty."){
			if(f[name]!=guilty){
				if(huang[f[name]]==-1||huang[f[name]]==1)huang[f[name]]=1;
				else{
					flag=0;
					return ;
				}
			}
			else{
				if(huang[f[name]]==-1||huang[f[name]]==0)huang[f[name]]=0;
				else{
					flag=0;
					return ;
				}
			}
			continue;
		}
		say="";name2="";
		for(j=w+2;fk[i][j]!=' ';j++)name2=name2+fk[i][j];
//		cout<<name2<<' ';
		for(j=j+1;j<len[i];j++)say=say+fk[i][j];
//		cout<<say<<'\n';
		if(f[name2]!=0){
			if(say=="is guilty."){
				if(f[name2]==guilty){
					if(huang[f[name]]==-1||huang[f[name]]==1)huang[f[name]]=1;
					else{
						flag=0;
						return ;
					}
				}
				else{
					if(huang[f[name]]==-1||huang[f[name]]==0)huang[f[name]]=0;
					else{
						flag=0;
						return ;
					}
				}
				continue;
			}
			if(say=="is not guilty."){
				if(f[name2]!=guilty){
					if(huang[f[name]]==-1||huang[f[name]]==1)huang[f[name]]=1;
					else{
						flag=0;
						return ;
					}
				}
				else{
					if(huang[f[name]]==-1||huang[f[name]]==0)huang[f[name]]=0;
					else{
						flag=0;
						return ;
					}
				}
				continue;
			}
		}
		say="";tday="";
		for(j=w+2;j<=w+9;j++)say=say+fk[i][j];
		for(j=w+11;j<len[i]-1;j++)tday=tday+fk[i][j];
		if(say=="Today is"){
			if(tday==today[day]){
				if(huang[f[name]]==-1||huang[f[name]]==1)huang[f[name]]=1;
				else{
					flag=0;
					return ;
				}
			}
			else{
				if(huang[f[name]]==-1||huang[f[name]]==0)huang[f[name]]=0;
				else{
					flag=0;
					return ;
				}
			}
			continue;
		}
	}
	int s;
	s=0;
	for(i=1;i<=m;i++)
		if(huang[i]==1)s++;
	if(m-s<n)flag=0;
}
int main(){
	cin>>m>>n>>p;
	for(i=1;i<=m;i++){
		cin>>st;jj[i]=st;
		f[st]=i;
	}
	getchar();
	for(i=1;i<=p;i++)
		getline(cin,fk[i]),len[i]=fk[i].size();
	for(i=1;i<=m;i++){
		for(j=1;j<=7;j++){
			flag=1;
			pd(i,j);
			if(flag){
				if(xiong==i||xiong==0)xiong=i;
				else{
					cout<<"Cannot Determine";
					return 0;
				}
			}
		}
	}
	if(xiong!=0)cout<<jj[xiong];
	else cout<<"Impossible";
}
2023/10/17 17:55
加载中...