ccf練習- 學生排隊(c++)題解
阿新 • • 發佈:2018-12-17
#include <iostream> using namespace std; // const int N = 1000; struct Node { int index; int pos; } stu[N]; int main(int argc, char** argv) { int n,m,p,q; int temp1[N],temp2[N]; cin>>n; int arr[n]; for(int i=1;i<=n;i++){ stu[i].index=i; stu[i].pos=i; } cin>>m; for(int i=0;i<m;i++){ cin>>p>>q; if(q>0){ for(int i=stu[p].pos+1;i<=stu[p].pos+q;i++){ for(int j=1;j<=n;j++) if(stu[j].pos==i) temp1[i]=j; } for(int i=stu[p].pos+1;i<=stu[p].pos+q;i++){ int k=temp1[i]; stu[k].pos--; } stu[p].pos += q; }else{ for(int i=stu[p].pos+q;i<stu[p].pos;i++){ for(int j=1;j<=n;j++) if(stu[j].pos==i) { // stu[j].pos++; temp1[i]=j; // cout<<"stu["<<j<<"]:"<<stu[j].pos<<endl; }; } for(int i=stu[p].pos+q;i<stu[p].pos;i++){ int k=temp1[i]; stu[k].pos++; } stu[p].pos +=q; } } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ if(stu[j].pos==i) cout<<j<<" "; } return 0; }