Mai intai trebuie sa te autentifici.
Cod sursa(job #644908)
Utilizator | Data | 7 decembrie 2011 19:52:49 | |
---|---|---|---|
Problema | Elementul majoritar | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.79 kb |
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<fstream>
using namespace std;
long maj(long n,long *a,long *nr) {
long x=-1,k=0,i;
for (i=0;i<n;i++) {
if (!k) {
x=a[i];
k=1;
} else
k+=(a[i]==x)?1:-1;
}
if(x<0)
return x;
for(i=0;i<n;i++)
if(a[i]==x)
(*nr)++;
return ((*nr)>n/2)?x:-1;
}
int main(){
long i,n,nr=0,*v;
ifstream in("elmaj.in");
in>>n;
// aloca dinamic memoria pentru sortare
v=(long *)malloc(n*sizeof(long));
// citeste elementele vectorului din elmaj.in
for(i=0;i<n;i++)
in>>v[i];
in.close();
ofstream out("elmaj.out");
// cauta elementul majoritar si scrie in elmaj.out
i=maj(n,v,&nr);
out<<i;
if(i>0)
out<<" "<<nr;
out<<endl;
out.close();
return 0;
}