标签:
表示英文题意太坑,也是才知道有chinese版本的问题描述的。大水题
地主小花难得当一回好人,这次她准备给长工们发津贴。有些长工会偷偷地在领完津贴后又排回队伍里去领津贴。不过小花对此表示无所谓,因为她发的是固定数额的津贴。但是如果有人领到的津贴超过其他所有人的总和的话,小花为了显示自己的公正,会去惩罚他。现已知每个来领津贴的人会登记下自己的工号。
输入有多组数据,每组第一行为一个n(1 < = n < = 1000),表示有多少津贴被领,第二行n个数字a1,a2...an,表示n个来领津贴的人的工号(0 < = a[i] < 10000)。
输出一个数字,表示被惩罚的人的工号。 若没有人需要被惩罚,则输出-1。
3 1 1 2 4 2 1 4 3
1 -1
第一个样例中,1号工人拿走的钱超过其他所有人总和,所以输出1。 第二个样例中,没有拿到的钱超过其他所有人的总和,所以输出-1.
1 #include<stdio.h> 2 #include<math.h> 3 #include<string.h> 4 #include<stdlib.h> 5 #include<ctype.h> 6 #include <map> 7 #include <set> 8 #include <cmath> 9 #include <deque> 10 #include <queue> 11 #include <stack> 12 #include <cstdio> 13 #include <cctype> 14 #include <string> 15 #include <vector> 16 #include <cstdlib> 17 #include <cstring> 18 #include <iostream> 19 #include <algorithm> 20 #define LL long long 21 #define INF 0x7fffffff 22 using namespace std; 23 24 25 int main() 26 { 27 int n,a[10005],b[10005],x; 28 //freopen("test.txt","r",stdin); 29 while(scanf("%d",&n)!=EOF) 30 { 31 int flag=0; 32 for(int i=0;i<10004;i++) 33 { 34 a[i]=0; 35 } 36 for(int i=0;i<n;i++) 37 { 38 scanf("%d",&b[i]); 39 a[b[i]]++; 40 } 41 for(int i=0;i<n;i++) 42 { 43 44 if(2*a[b[i]]>n) 45 { 46 printf("%d\n",b[i]); 47 flag=1; 48 break; 49 } 50 } 51 if(!flag) 52 { 53 printf("-1\n"); 54 } 55 } 56 return 0; 57 }
标签:
原文地址:http://www.cnblogs.com/sunshiniing/p/4718449.html