Cod sursa(job #1012170)

Utilizator ioalexno1Alexandru Bunget ioalexno1 Data 18 octombrie 2013 13:18:42
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
#include <vector>
#define N 100010
using namespace std;
vector <int> bucket[10];
vector <int>::iterator it;
inline int max(int x,int y){ if(x>y)return x; return y; }
int a[N];
int main()
{ int n,k;
freopen("elmaj.in","r",stdin);
scanf("%d\n",&n);
int maxv=0;
for(int i=1;i<=n;++i)
    {
    scanf("%d",&a[i]);
    maxv=max(maxv,a[i]);
    }
fclose(stdin);
long long exp=1;
while(maxv>exp)
    {
    for(int i=1;i<=n;++i)bucket[a[i]/exp%10].push_back(a[i]);
    k=0;
    for(int i=0;i<10;++i)
        {
        for(it=bucket[i].begin();it!=bucket[i].end();++it)
            a[++k]=*it;
        bucket[i].clear();
        }
    exp*=10;
    }
int x=a[n/2+1],ap=0;
freopen("elmaj.out","w",stdout);
for(int i=1;i<=n;++i)
    if(x!=a[i])++ap;
if(ap>n/2)printf("%d %d",x,ap);
    else printf("-1");
fclose(stdout);
return 0;
}