用map做超内存,然后老老实实的用普通方法去做秒了!
map方法(Memory Limit Exceeded):
#include<bits/stdc++.h>
using namespace std;
int main()
{
string str;
map<string,string>pq;
while(getline(cin,str),str!="@END@")
{
string str1;
int pn=str.find(']');
str1=str.substr(0,pn+1);
pq[str1]=str.substr(pn+2,str.length()-1);
str1=str.substr(1,pn-1);
pq[str.substr(pn+2,str.length()-1)]=str1;
}
int t;
cin>>t;
getchar();
while(t--)
{
getline(cin,str);
if(pq[str].size())
cout<<pq[str]<<"\n";
else
cout<<"what?\n";
}
return 0;
}
普通方法:
#include<bits/stdc++.h>
using namespace std;
struct point
{
string m,g;
}pq[100005];
int main ()
{
string str;
int k=0,pn;
while(getline(cin,str),str!="@END@")
{
pn=str.find(']');
pq[k].m=str.substr(0,pn+1);
pq[k].g=str.substr(pn+2,str.length()-1);
k++;
}
int t;
cin>>t;
getchar();
while(t--)
{
int f=0;
getline(cin,str);
for(int i=0;i<k;i++)
{
if(str==pq[i].m)
{
f=1;
cout<<pq[i].g<<"\n";
break;
}
if(str==pq[i].g)
{
f=1;
cout<<pq[i].m.substr(1,pn-1)<<"\n";
break;
}
}
if(!f)
cout<<"what?\n";
}
return 0;
}