#include<bits/stdc++.h>
#define _ 0
using namespace std;
string nam,guilty,zc[105],week[8],sb[105];
int n,m,p,said[105],xs,ren[105],ship[105];
bool error;
map<int,string>name;
void biao()
{
week[1]="Today is Monday.";
week[2]="Today is Tuesday.";
week[3]="Today is Wednesday.";
week[4]="Today is Thursday.";
week[5]="Today is Friday.";
week[6]="Today is Saturday.";
week[7]="Today is Sunday.";
}
void set(int who,int yx)
{
if(ship[who]&&ship[who]!=yx)
{
error=1;
}
else
{
ship[who]=yx;
}
}
int main()
{
int i,j,k,day,zh,jh,dd,ans=0;
bool flag;
cin>>n>>m>>p;
biao();
for(i=1;i<=n;i++)
{
cin>>nam;
name[i]=nam;
}
char ch=getchar();
while(ch==10)
{
ch=getchar();
getchar();
}
for(i=1;i<=p;i++)
{
string ppp;
getline(cin,zc[i]);
zc[i].erase(zc[i].end()-1);
for(k=0;k<zc[i].length();k++)
{
if(zc[i][k]!=':')
{
ppp+=zc[i][k];
}
else
{
break;
}
}
for(j=1;j<=n;j++)
{
if(ppp==name[j])
{
ren[i]=j;
break;
}
}
for(k=ppp.length()+2;k<zc[i].length();k++)
{
sb[i]+=zc[i][k];
}
if(sb[i]=="I am guilty.")
{
said[i]=1;
}
else
{
for (j=1;j<=7;j++)
{
if(sb[i]==week[j])
{
said[i]=2;
break;
}
}
}
if(sb[i]=="I am not guilty.")
{
said[i]=3;
}
else
{
for(j=1;j<=n;j++)
{
if(sb[i]==name[j]+" is guilty.")
{
said[i]=4;
break;
}
else if(sb[i]==name[j]+" is not guilty.")
{
said[i]=5;
break;
}
}
}
}
for(day=1;day<=7;day++)
{
for(i=1;i<=n;i++)
{
error=false;
jh=0;
dd=0;
memset(ship,0,sizeof(ship));
for(j=1;j<=p&&!error;j++)
{
if(said[j]==1)
{
if(i==ren[j])
{
set(ren[j],1);
}
else
{
set(ren[j],-1);
}
}
if(said[j]==2)
{
if(sb[j]==week[day])
{
set(ren[j],1);
}
else
{
set(ren[j],-1);
}
}
if(said[j]==3)
{
if(i!=ren[j])
{
set(ren[j],1);
}
else
{
set(ren[j],-1);
}
}
if(said[j]==4)
{
for(k=1;k<=n;k++)
{
if(sb[j]==name[k]+" is guilty.")
{
if(k==i)
{
set(ren[j],1);
}
else
{
set(ren[j],-1);
}
}
}
}
if(said[j]==5)
{
for(k=1; k<=n; k++)
{
if(sb[j]==name[k]+" is not guilty.")
{
if(k!=i)
{
set(ren[j],1);
}
else
{
set(ren[j],-1);
}
}
}
}
}
for(k=1;k<=n;k++)
{
if(ship[k]==-1)
{
jh++;
}
else if(ship[k]==0)
{
dd++;
}
}
if(!error&&jh<=m&&m<=jh+dd)
{
if(xs&&xs!=i)
{
cout<<"Cannot Determine"<<endl;
return 0;
}
else
{
xs=i;
}
}
}
}
if(!xs)
{
cout<<"Impossible"<<endl;
}
else
{
cout<<name[xs]<<endl;
}
return 0;
}
编译错误