Cod sursa(job #2214811)
| Utilizator | Data | 20 iunie 2018 10:21:21 | |
|---|---|---|---|
| Problema | Elementul majoritar | Scor | 100 |
| Compilator | c | Status | done |
| Runda | Arhiva educationala | Marime | 0.58 kb |
#include <stdio.h>
#include <stdlib.h>
int v[3000000];
int main(){
FILE *fin,*fout;
int n,cnt,i,maj,nr;
fin=fopen("elmaj.in", "r");
fout=fopen("elmaj.out", "w");
fscanf(fin, "%d", &n);
for(i=0;i<n;i++)
fscanf(fin, "%d", &v[i]);
maj=v[0];
nr=1;
for(i=1;i<n;i++){
if(v[i]==maj)
nr++;
else{
nr--;
if(nr<0){
maj=v[i];
nr=1;
}
}
}
cnt=0;
for(i=0;i<n;i++){
if(v[i]==maj)
cnt++;
}
if(cnt>n/2)
fprintf(fout, "%d %d\n", maj,cnt);
else
fprintf(fout, "-1\n");
fclose(fin);
fclose(fout);
return 0;
}
