输入有多组情况,每组第一行为n,表示唱片数,下一行有n个数字,表示各个唱片首小明的喜爱程度。下一行为m,小明的操作次数,一下m行每行开始包含一个数字t,表示题目中描述的操作种类,后面跟着一到两个数字,表示题目描述中的i和j
每组情况输出一行,表示唱片整理后的情况,最后一个数字后木有空格。(n,m<=1000)
用STL的list容易解决。
한국어< 中文 فارسی English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM GPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin
#include <iostream> #include <list> #include <cstdio> #include <algorithm> using namespace std; int main() { int n,m; list<int> CD; while(scanf("%d",&n)!=EOF) { for(int i=0;i<n;i++) { int a; cin >> a; CD.push_back(a); } cin >> m; for(int i=0;i<m;i++) { int num; cin >> num; if(num==1) { int step1,step2; cin >> step1 >> step2; list<int>::iterator qiqi; qiqi=find(CD.begin(),CD.end(),step1); if(qiqi!=CD.end()) CD.insert(++qiqi,step2); } else if(num==2) { int step; cin >> step; list<int>::iterator qiqi; for(qiqi=CD.begin();qiqi!=CD.end(); ) { if(*qiqi<=step) CD.erase(qiqi++); else qiqi++; } } else if(num==3) { int step1,step2; cin >> step1 >> step2; list<int>::iterator qiqi; qiqi=find(CD.begin(),CD.end(),step2); if(qiqi!=CD.end()) CD.remove(step1); qiqi=find(CD.begin(),CD.end(),step2); if(qiqi!=CD.end()) CD.insert(++qiqi,step1); } } list<int>::iterator zhgcu; for(zhgcu=CD.begin();zhgcu!=CD.end();zhgcu++) { if(zhgcu!=CD.begin()) cout << " "; cout << *zhgcu; } cout << endl; CD.clear(); } }