首页 > 代码库 > codeforces MUH and Cube Walls
codeforces MUH and Cube Walls
/*
题意:给一个序列,表示每一项任务的难度,要求完成每一项任务的循序是按照难度由小到大的!输出三种符合要求的工作顺序的序列!
思路:直接看代码....
*/
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 #define N 2005 6 using namespace std; 7 struct node{ 8 int h; 9 int p;10 };11 12 node nd[N];13 14 int vis[N];15 16 bool cmp(node a, node b){17 return a.h < b.h;18 }19 20 void swap(int *p, int *q){21 int t = *p;22 *p = *q;23 *q = t;24 }25 26 int main(){27 int n;28 scanf("%d", &n);29 for(int i=1; i<=n; ++i){30 scanf("%d", &nd[i].h);31 nd[i].p=i;32 }33 sort(nd+1, nd+n+1, cmp);34 int cnt = 0;35 for(int i=1; i<n; ++i){36 for(int j=i+1; j<=n; ++j)37 if(nd[i].h == nd[j].h)38 ++cnt;//找到有多少对数相同的39 else{ i=j-1; break; }40 }41 42 43 if(cnt<2) cout<<"NO"<<endl;//如果少于两对,一定不能44 else{45 cout<<"YES"<<endl;46 cout<<nd[1].p;47 for(int i=2; i<=n; ++i)//输出源序列48 cout<<" "<<nd[i].p;49 cout<<endl;50 int p;51 for(int i=1; i<n; ++i)52 if( nd[i].h == nd[i+1].h){//找到第一对相同的交换位置53 p = i;54 swap(&nd[i].p, &nd[i+1].p);55 break;56 }57 cout<<nd[1].p;58 for(int i=2; i<=n; ++i)59 cout<<" "<<nd[i].p;60 cout<<endl;61 for(int i=1; i<n; ++i)//找到第二对相同的交换位置62 if( nd[i].h == nd[i+1].h && i != p){63 swap(&nd[i].p, &nd[i+1].p);64 break;65 }66 67 cout<<nd[1].p;68 for(int i=2; i<=n; ++i)69 cout<<" "<<nd[i].p;70 cout<<endl;71 }72 73 return 0;74 }
codeforces MUH and Cube Walls
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。