http://codeforces.com/problemset/problem/135/A

题意 : 我能说我卡在这个题的题意上很久吗。。。。。这个题就是在数组里找一个数,然后找另一个数把他替换掉,然后再对数组进行排序,输出可能的数组最小值。。。。

思路 : 一开始没反应过来,不知道要替换掉哪个数,后来一想才明白,要求最后得到的最小,那就把最大的那个替换掉不就行了,而且最简单的还是替换成1,然后要注意的一点是因为题目中说必须要替换掉一个,而且不能用自己替换掉自己,所以要考虑万一输入的全是1,就要替换成2。。。。

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std ;
int a[101000] ;
int main()
{
    int n ;
    while(cin >> n)
    {
        for(int i = 0 ; i < n ; i++)
        scanf("%d",&a[i]) ;
        sort(a,a+n) ;
        if(a[n-1] == 1)
        a[n-1] = 2 ;
        else{a[n-1] = 1 ;
            sort(a,a+n) ;
        }
        sort(a,a+n) ;
        for(int i = 0 ; i < n-1 ; i++)
        printf("%d ",a[i]) ;
        printf("%d\n",a[n-1]) ;
    }
    return 0 ;
}
View Code

 

posted on 2013-11-10 20:04  枫、  阅读(189)  评论(0编辑  收藏  举报