230:Borrowers
生活随笔
收集整理的這篇文章主要介紹了
230:Borrowers
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Borrowers
又因?yàn)檩敵鯳A了一發(fā)。。。一定要看清楚輸出要求啊啊
#include<cstdio> #include<iostream> #include<map> #include<vector> #include<cstring> #include<algorithm> using namespace std; const int maxn = 10000; typedef pair<string,string>P; vector<P>books; map<string,int>pos; int bor[maxn],ret[maxn]; //bor標(biāo)記書是否被借 ret記錄還的書的位置 int cmp(P a,P b){if(a.second != b.second) return a.second < b.second;return a.first < b.first; } int main(){string s,t;while(getline(cin,s) && s[0] != 'E'){size_t p1 = s.find('"',1),p2 = s.find("by ");books.push_back(make_pair('"'+s.substr(1,p1-1)+'"',s.substr(p2+3)));}sort(books.begin(),books.end(),cmp);for(int i = 0;i < books.size();i++){pos[books[i].first] = i; //記錄每本書的位置}int cnt = 0;while(cin>>s && s[0] != 'E'){if(s[0] == 'S'){sort(ret,ret + cnt); //放書之前拍下序后面移動(dòng)的次數(shù)會(huì)少一些for(int i = 0;i < cnt;i++){int t = ret[i];bor[t] = 0;cout<<"Put "<<books[t].first<<' ';if(!t) cout<<"first\n";else{t--;while(t >= 0 && bor[t]) t--;if(t < 0) cout<<"first\n";else cout<<"after "<<books[t].first<<endl;}}cout<<"END\n"; //別忘了這個(gè)。。。cnt = 0;}else{getchar();getline(cin,t);if(s[0] == 'B') bor[pos[t]] = 1;if(s[0] == 'R') ret[cnt++] = pos[t];}}return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/JingwangLi/p/10202726.html
總結(jié)
以上是生活随笔為你收集整理的230:Borrowers的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。