Pagini recente » Cod sursa (job #2627512) | Cod sursa (job #1648078) | Cod sursa (job #2119733) | Cod sursa (job #2190598) | Cod sursa (job #1673047)
#include <stdio.h>
int v[3000000];
int main() {
FILE *fin, *fout;
int n, i, nr, maj;
// citire vector
fin = fopen( "elmaj.in", "r" );
fscanf( fin, "%d", &n );
for ( i = 0; i < n; i++ )
fscanf( fin, "%d", &v[i] );
fclose( fin );
// cautam candidatul la element majoritar
maj = v[0];
nr = 1;
for ( i = 1; i < n; i++ )
if ( v[i] == maj ) // cita vreme avem maj incrementam numarul de maj gasite
nr++;
else {
nr--; // altfel decrementam numarul de maj
if ( nr < 0 ) { // daca am scazut sub zero
maj = v[i]; // alegem drept candidat elementul curent
nr = 1; // care apare o data
}
}
// verificare candidat la element majoritar
nr = 0;
for ( i = 0; i < n; i++ ) // numaram de cit ori apare maj in vector
if ( v[i] == maj )
nr++;
fout = fopen ( "elmaj.out", "w" );
if ( nr > n / 2 ) // daca maj apare de mai mult de n/2 ori este majoritar
fprintf( fout, "%d %d\n", maj, nr );
else
fprintf( fout, "-1\n" );
fclose( fout );
}