九度oj 题目1185:特殊排序

题目描述:

输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序。

输入:
输入第一行包括1个整数N,1<=N<=1000,代表输入数据的个数。
接下来的一行有N个整数。
输出:
可能有多组测试数据,对于每组数据,
第一行输出一个整数,代表N个整数中的最大值,并将此值从数组中去除,将剩下的数进行排序。
第二行将排序的结果输出。
样例输入:
4
1 3 4 2
样例输出:
4
1 2 3
提示:

如果数组中只有一个数,当第一行将其输出后,第二行请输出"-1"。

这道题描述不是很明确,将此值从数组中去除,是指去除一个值,而不是都去除。

 1 #include <cstdio>
 2 #include <cstdlib>
 3 #include <cstring>
 4 #include <string>
 5 #include <algorithm>
 6 
 7 #define MAX 1002
 8 
 9 int toDeal[MAX];
10 
11 int cmp(const void * a, const void *b) {
12     int  at = *(int *)a;
13     int  bt = *(int *)b;
14     return at - bt;
15 }
16 int main(int argc, char const *argv[])
17 {
18     int n;
19     while(scanf("%d",&n) != EOF) {
20         for(int i = 0; i < n; i++) {
21             scanf("%d",&toDeal[i]);
22         }
23         if(n == 1) {
24             printf("%d\n",toDeal[0]);
25             printf("%d\n",-1);
26             continue;
27         }
28         qsort(toDeal, n, sizeof(int), cmp);
29         
30         
31         printf("%d\n",toDeal[n-1]);
32         bool isOne = true;
33         for(int i = 0; i < n-1; i++) {
34             if(isOne) {
35                 printf("%d",toDeal[i]);
36                 isOne = false;
37             }
38             else {
39                 printf(" %d",toDeal[i]);
40             }
41             
42         }
43         printf("\n");
44     }
45     return 0;
46 }

 

posted @ 2016-07-20 22:32  Jason杰  阅读(654)  评论(0编辑  收藏  举报