简单模拟题。
写的时候注意一些小优化,小心TLE。
#include<iostream> #include<cstring> #include<cmath> #include<algorithm> #include<cstdio> #include<map> #include<queue> #include<vector> using namespace std; struct X { string id; char title[90]; int Title; char author[90]; int Author; vector<int>key; char publisher[90]; int Publisher; int year; }s[10000+10]; int n,m; map<string,int>Tit,Aut,Key,Pub; vector<string>ans; int tot_Tit=0,tot_Aut=0,tot_Key=0,tot_Pub=0; bool cmp(const X&a,const X&b) { return a.id<b.id; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { cin>>s[i].id; getchar(); gets(s[i].title); if(Tit[s[i].title]==0) Tit[s[i].title]=++tot_Tit; s[i].Title=Tit[s[i].title]; gets(s[i].author); if(Aut[s[i].author]==0) Aut[s[i].author]=++tot_Aut; s[i].Author=Aut[s[i].author]; char tmp[1000]; gets(tmp); int len=strlen(tmp); string q; for(int j=0;j<=len;j++) { if(tmp[j]==' '||tmp[j]=='