luoguP1039
#include<iostream>#include<map>
#include<cstring>
using namespace std;
struct p{
int id;
string sen;
}b;
map<string,int> ma;
string a;
string d[]=
{
"Today is Sunday.",
"Today is Monday.",
"Today is Tuesday.",
"Today is Wednesday.",
"Today is Thursday.",
"Today is Friday.",
"Today is Saturday.",
};
int n,m,q;
int T,F,ans,ansf;
int TF;
bool pdtf(int id,bool fl)
{
if(TF==-1)
{
TF=fl;
if(fl) ++T;
else ++F;
}
else
return TF!=fl;
if(F>n||T>m-n) return 1;
return 0;
}
void pd(int id,int day)
{
T=F=0;
memset(TF,-1,sizeof TF);
for(int i=1;i<=q;i++)
{
int flag=b.sen.find("I am guilty.");
if(flag!=-1)
{
if(pdtf(b.id,b.id==id)) return;
}
flag=b.sen.find("I am not guilty.");
if(flag!=-1)
{
if(pdtf(b.id,b.id!=id)) return;
}
flag=b.sen.find(" is guilty.");
if(flag!=-1)
{
string tmp=b.sen;
tmp.erase(flag,11);
if(pdtf(b.id,ma==id)) return;
}
flag=b.sen.find(" is not guilty.");
if(flag!=-1)
{
string tmp=b.sen;
tmp.erase(flag,15);
if(pdtf(b.id,ma!=id)) return;
}
flag=b.sen.find("Today is ");
if(flag!=-1)
{
if(pdtf(b.id,d==b.sen)) return;
}
}
if(ans!=0&&ans!=id) ansf=1;
ans=id;
}
int main()
{
cin>>n>>m>>q;
for(int i=1;i<=n;i++)
{
cin>>a;ma]=i;
}
for(int i=1;i<=q;i++)
{
string name,s;
cin>>name;
name.erase(name.length()-1);
getline(cin,b.sen);
b.sen.erase(0,1);
if(b.sen.sen.length()-1]=='\n'||b.sen.sen.length()-1]=='\r')
b.sen.erase(b.sen.length()-1);
b.id=ma;
}
for(int i=1;i<=n;i++)
{
for(int j=0;j<7;j++)
{
pd(i,j);
/*if(ansf==1)
{
cout<<"Cannot Determin";
return 0;
}*/
}
}
if(ans==0) cout<<"Impossible";
else cout<<a;
return 0;
} #include<iostream>
#include<map>
#include<cstring>
using namespace std;
struct p{
int id;
string sen;
}b;
map<string,int> ma;
string a;
string d[]=
{
"Today is Sunday.",
"Today is Monday.",
"Today is Tuesday.",
"Today is Wednesday.",
"Today is Thursday.",
"Today is Friday.",
"Today is Saturday.",
};
int n,m,q;
int T,F,ans,ansf;
int TF;
bool pdtf(int id,bool fl)
{
if(TF==-1)
{
TF=fl;
if(fl) ++T;
else ++F;
}
else
return TF!=fl;
if(F>n||T>m-n) return 1;
return 0;
}
void pd(int id,int day)
{
T=F=0;
memset(TF,-1,sizeof TF);
for(int i=1;i<=q;i++)
{
int flag=b.sen.find("I am guilty.");
if(flag!=-1)
{
if(pdtf(b.id,b.id==id)) return;
}
flag=b.sen.find("I am not guilty.");
if(flag!=-1)
{
if(pdtf(b.id,b.id!=id)) return;
}
flag=b.sen.find(" is guilty.");
if(flag!=-1)
{
string tmp=b.sen;
tmp.erase(flag,11);
if(pdtf(b.id,ma==id)) return;
}
flag=b.sen.find(" is not guilty.");
if(flag!=-1)
{
string tmp=b.sen;
tmp.erase(flag,15);
if(pdtf(b.id,ma!=id)) return;
}
flag=b.sen.find("Today is ");
if(flag!=-1)
{
if(pdtf(b.id,d==b.sen)) return;
}
}
if(ans!=0&&ans!=id) ansf=1;
ans=id;
}
int main()
{
cin>>n>>m>>q;
for(int i=1;i<=n;i++)
{
cin>>a;ma]=i;
}
for(int i=1;i<=q;i++)
{
string name,s;
cin>>name;
name.erase(name.length()-1);
getline(cin,b.sen);
b.sen.erase(0,1);
if(b.sen.sen.length()-1]=='\n'||b.sen.sen.length()-1]=='\r')
b.sen.erase(b.sen.length()-1);
b.id=ma;
}
for(int i=1;i<=n;i++)
{
for(int j=0;j<7;j++)
{
pd(i,j);
/*if(ansf==1)
{
cout<<"Cannot Determin";
return 0;
}*/
}
}
if(ans==0) cout<<"Impossible";
else cout<<a;
return 0;
} #include<iostream>
#include<map>
#include<cstring>
using namespace std;
struct p{
int id;
string sen;
}b;
map<string,int> ma;
string a;
string d[]=
{
"Today is Sunday.",
"Today is Monday.",
"Today is Tuesday.",
"Today is Wednesday.",
"Today is Thursday.",
"Today is Friday.",
"Today is Saturday.",
};
int n,m,q;
int T,F,ans,ansf;
int TF;
bool pdtf(int id,bool fl)
{
if(TF==-1)
{
TF=fl;
if(fl) ++T;
else ++F;
}
else
return TF!=fl;
if(F>n||T>m-n) return 1;
return 0;
}
void pd(int id,int day)
{
T=F=0;
memset(TF,-1,sizeof TF);
for(int i=1;i<=q;i++)
{
int flag=b.sen.find("I am guilty.");
if(flag!=-1)
{
if(pdtf(b.id,b.id==id)) return;
}
flag=b.sen.find("I am not guilty.");
if(flag!=-1)
{
if(pdtf(b.id,b.id!=id)) return;
}
flag=b.sen.find(" is guilty.");
if(flag!=-1)
{
string tmp=b.sen;
tmp.erase(flag,11);
if(pdtf(b.id,ma==id)) return;
}
flag=b.sen.find(" is not guilty.");
if(flag!=-1)
{
string tmp=b.sen;
tmp.erase(flag,15);
if(pdtf(b.id,ma!=id)) return;
}
flag=b.sen.find("Today is ");
if(flag!=-1)
{
if(pdtf(b.id,d==b.sen)) return;
}
}
if(ans!=0&&ans!=id) ansf=1;
ans=id;
}
int main()
{
cin>>n>>m>>q;
for(int i=1;i<=n;i++)
{
cin>>a;ma]=i;
}
for(int i=1;i<=q;i++)
{
string name,s;
cin>>name;
name.erase(name.length()-1);
getline(cin,b.sen);
b.sen.erase(0,1);
if(b.sen.sen.length()-1]=='\n'||b.sen.sen.length()-1]=='\r')
b.sen.erase(b.sen.length()-1);
b.id=ma;
}
for(int i=1;i<=n;i++)
{
for(int j=0;j<7;j++)
{
pd(i,j);
/*if(ansf==1)
{
cout<<"Cannot Determin";
return 0;
}*/
}
}
if(ans==0) cout<<"Impossible";
else cout<<a;
return 0;
}
页:
[1]