SRM554 Div1 500

来源:互联网 发布:淘宝促销短信模板 编辑:程序博客网 时间:2024/06/05 05:23
/*    终态分析:最终有贡献的值为每两个间的最大值(每个值可以出现0,1,2次)     不出现的数可以被比它大的数替代那就让个数最小的不出现其他都出现了一次    如果不考虑字典序的话我们将其排序成一个单调序列即可 如图1    于是我们可以先的找出一个字典序尽量小的递减序列再把剩余的接上去使之递增 如图2*/

图1图2

#include<bits/stdc++.h>using namespace std;int n,a,b,A[50],rank1[50],rank2[50];bool cmp(int x,int y){    return A[x]-A[y]?A[x]<A[y]:x<y;}int main(){    scanf("%d",&n);    for(int i=0,lim=50;i<n;i++){        scanf("%d",&A[i]);        if(A[i]<=lim)lim=A[i],rank1[++a]=i;        else rank2[++b]=i;    }sort(rank2+1,rank2+b+1,cmp);    for(int i=1;i<=a;i++)printf("%d ",rank1[i]);    for(int i=1;i<=b;i++)printf("%d ",rank2[i]);} 
1 0