Distribution money
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
分析:这是我第三次打BC,还不是很习惯。这道题很水,我却想多了,代码写得乱。
思路:每份钱一样,所以同一个人领取的份数最多的超过总份数的一半就惩罚他。注意:当同一个人领取时也会受到惩罚。
CODE:
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int main()
{
int arr[10005],a[10005],brr[10005];
int n;
while(cin>>n){
memset(arr,0,sizeof(arr));
memset(brr,0,sizeof(brr));
for(int i=0;i<n;i++){
cin>>a[i];
arr[a[i]]++;
}
if(n==1){
cout<<-1<<endl;
continue;
}
if(arr[a[0]]==n){
cout<<a[0]<<endl;
continue;
}
for(int i=0;i<10005;i++)
brr[i]=arr[i];
sort(brr,brr+10005);
if(brr[10004]!=brr[10003]&&brr[10004]*2>n){
for(int i=0;i<n;i++){
if(arr[a[i]]==brr[10004]){
cout<<a[i]<<endl;
break;
}
}
}
else
cout<<-1<<endl;
}
}