Pagini recente » Cod sursa (job #1502184) | Cod sursa (job #2546548) | Cod sursa (job #2472184) | Cod sursa (job #698103) | Cod sursa (job #742023)
Cod sursa(job #742023)
#include <stdio.h>
#define NMAX 1000000
int v[NMAX];
int N;
int solve(int *winner, int *app)
{
int i;
int cand = -1, k = 0;
freopen("elmaj.in", "r", stdin);
freopen("elmaj.out", "w", stdout);
scanf("%d", &N);
for (i = 0; i < N; i++)
scanf("%d", &v[i]);
for (i = 0; i < N; i++) {
if (k == 0) {
cand = v[i];
k++;
} else {
if (v[i] != cand)
k--;
else
k++;
}
}
//printf("Going to print cand %d, k %d\n", cand, k);
if (k <= 0)
return -1;
/* check if we really have a winner */
k = 0;
for (i = 0; i < N; i++)
if (v[i] == cand)
k++;
if (k >= N/2 + 1) {
*winner = cand;
*app = k;
return 0;
}
return -1;
}
int main(void)
{
int winner, app, ret;
ret = solve(&winner, &app);
if (ret < 0)
printf("-1\n");
else
printf("%d %d\n", winner, app);
return 0;
}