与题解比对,没发现问题。
只对了subtask2
代码:
#include<bits/stdc++.h>
using namespace std;
int t,n,m;
string nam[15],fre[10005][4];
bool is_sub(string s)
{
string s1="freopen";
int x=s1.find(s),len;
if(x==-1)return false;
else return true;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>t>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>nam[i];
}
while(n--)
{
bool flag=true;
for(int i=1;i<=m;i++)
{
cin>>fre[i][1]>>fre[i][2];
}
for(int i=1;i<=m;i++)
{
int x,len;
string s1,s2;
x=fre[i][1].find(nam[i]),len=fre[i][1].length();
if(x==-1)
{
//cout<<"WA0"<<"\n";
string sub=fre[i][1].substr(0,10),subb=fre[i][1].substr(0,2);
//cout<<sub<<" "<<fre[i][1][fre[i][1].length()-2]<<" "<<fre[i][1][fre[i][1].length()-1]<<"\n";
if((sub=="//freopen("||(is_sub(nam[i])&&subb=="//"&&fre[i][1][2]!='/'&&fre[i][1].find("(")>1))&&fre[i][1][fre[i][1].length()-2]==')'&&fre[i][1][fre[i][1].length()-1]==';')
{
cout<<"Wrong file operation takes you to your ancestors along with your 3 years' efforts on OI.\n";
flag=false;
break;
}
else cout<<"Good luck and have fun.\n";
flag=false;
break;
}
else
{
string s1,s2;
s1=fre[i][1].substr(0,x),s2=fre[i][1].substr(x+nam[i].length(),len-x-1);
fre[i][1]=s1+s2;
string sub=fre[i][1].substr(0,10),subb=fre[i][1].substr(0,2);
//cout<<"debug "<<fre[i][1][fre[i][1].length()-2]<<" "<<fre[i][1][fre[i][1].length()-1]<<"\n";
if((sub=="//freopen("||(is_sub(nam[i])&&subb=="//"&&fre[i][1][2]!='/'&&fre[i][1].find("(")>1))&&fre[i][1][fre[i][1].length()-2]==')'&&fre[i][1][fre[i][1].length()-1]==';')
{
cout<<"Wrong file operation takes you to your ancestors along with your 3 years' efforts on OI.\n";
flag=false;
break;
}
else
{
//cout<<"debug:"<<fre[i][1]<<"\n";
if(fre[i][1]!="freopen(\".in\",\"r\",stdin);")
{
cout<<"Good luck and have fun.\n";
flag=false;
break;
}
}
}
x=fre[i][2].find(nam[i]),len=fre[i][2].length();
if(x==-1)
{
//cout<<"WA0"<<"\n";
string sub=fre[i][2].substr(0,10),subb=fre[i][1].substr(0,2);
if((sub=="//freopen("||(is_sub(nam[i])&&subb=="//"&&fre[i][2][2]!='/'&&fre[i][2].find("(")>1))&&fre[i][2][fre[i][2].length()-2]&&fre[i][2][fre[i][2].length()-1]==';')
{
cout<<"Wrong file operation takes you to your ancestors along with your 3 years' efforts on OI.\n";
flag=false;
break;
}
else cout<<"Good luck and have fun.\n";
flag=false;
break;
}
else
{
s1=fre[i][2].substr(0,x),s2=fre[i][2].substr(x+nam[i].length(),len-x-1);
fre[i][2]=s1+s2;
string sub=fre[i][2].substr(0,10),subb=fre[i][1].substr(0,2);
//cout<<"debug "<<fre[i][2][fre[i][2].length()-2]<<" "<<fre[i][2][fre[i][2].length()-1]<<"\n";
if((sub=="//freopen("||(is_sub(nam[i])&&subb=="//"&&fre[i][2][2]!='/'&&subb=="//"&&fre[i][2].find("(")>1))&&fre[i][2][fre[i][2].length()-2]==')'&&fre[i][2][fre[i][2].length()-1]==';')
{
cout<<"Wrong file operation takes you to your ancestors along with your 3 years' efforts on OI.\n";
flag=false;
break;
}
else
{
//cout<<"debug:"<<fre[i][2]<<"\n";
if(fre[i][2]!="freopen(\".out\",\"w\",stdout);")
{
cout<<"Good luck and have fun.\n";
flag=false;
break;
}
}
}
}
if(flag==true)cout<<"PION2202 RP++.\n";
}
return 0;
}
/*
1 1 1
dickless
freopen("dickless.in","r",stdin);
freopen("dickless.out","w",stdout);
*/