230 - Borrowers

这道题有一个需要注意的地方:题中所说的放回书时该书前面的书到底是什么。

答案是:现在有的那本排在他前面的书。

该题uva上有测试数据(瓢虫),可以参考~~

#include

#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
map p;
string s1[1000],s2[1000],ss[1000],s[1000],s3,s4;
int main(){
    string buf;
    int maxn=0,ans,a[1000];
    while(getline(cin,buf)){
        if(buf=="END")
            break;
        for(int i=1;i             if(buf[i]=='"'){
                ans=i;break;
            }
        }
            for(int i=0;i                 if(ans>=i)
                    s1[maxn]+=buf[i];
                    if(i>ans+4)
                        s2[maxn]+=buf[i];
            }
            p[s1[maxn]]=s2[maxn];
            maxn++;
    }
    memset(a,0,sizeof(a));
    int kase=0,ens=0;
    set st;
    for(int i=0;i         st.insert(s2[i]);
    for(set::iterator it=st.begin();it!=st.end();++it){
            kase=0;
        for(int i=0;i             if(s2[i]==*it)
               ss[kase++]=s1[i];
        }
        sort(ss,ss+kase);
        for(int i=0;i             s[ens++]=ss[i];
            a[ens-1]=1;
            ss[i].clear();
        }
    }
    while(getline(cin,buf)){
        if(buf=="END")
            break;
            ans=0;
        for(int i=0;i             if(buf[i]=='"'){
                ans=i;break;
            }
        for(int i=0;i             if(i                 s3+=buf[i];
            if(i>=ans)
                s4+=buf[i];
        }
        if(s3=="BORROW"){
            for(int i=0;i                 if(s[i]==s4){
                    a[i]=0;break;
                }
        }
        if(s3=="RETURN"){
            for(int i=0;i                 if(s[i]==s4){
                    a[i]=2;break;
                }
        }
        if(buf=="SHELVE"){
            for(int i=0;i                 if(a[i]==2){
                    cout<<"Put "<                     int bbs=0;
                    for(int j=i-1;j>=0;j--)
                    if(a[j]==1){
                        cout<<" after "<                         bbs=1;break;
                    }
                    if(bbs==0)
                        cout<<" first"<<'\n';
                    a[i]=1;
                }
            }
            printf("END\n");
        }
        s3.clear();s4.clear();
    }
return 0;
}

你可能感兴趣的:(uva解题报告,acm,uva)