Pagini recente » Cod sursa (job #736980) | Cod sursa (job #756622) | Cod sursa (job #3334028) | Cod sursa (job #2157305) | Cod sursa (job #3313259)
// http://www.infoarena.ro/problema/elmaj
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define INPUT_FILE "elmaj.in"
#define OUTPUT_FILE "elmaj.out"
int main()
{
FILE *in = NULL;
if ((in = fopen(INPUT_FILE, "r")) == NULL)
{
fprintf(stderr, "failed to open input file %s\n", INPUT_FILE);
exit(-1);
}
int n = 0;
fscanf(in, "%d", &n);
int *v = (int *)malloc(n * sizeof(int));
for (int i = 0; i < n; i++)
{
fscanf(in, "%d", &v[i]);
}
int k = 0;
int candidate = 0;
for (int i = 0; i < n; i++)
{
if (k == 0)
{
candidate = v[i];
k = 1;
}
else if (v[i] == candidate)
{
k++;
}
else
{
k--;
}
}
int count = 0;
for (int i = 0; i < n; i++)
{
if (v[i] == candidate)
{
count++;
}
}
if (count <= n / 2)
{
candidate = -1;
}
FILE *out = NULL;
if ((out = fopen(OUTPUT_FILE, "w")) == NULL)
{
fprintf(stderr, "failed to open output file %s\n", OUTPUT_FILE);
exit(-2);
}
if (candidate >= 0)
{
fprintf(out, "%d %d", candidate, count);
}
else
{
fprintf(out, "-1");
}
fclose(out);
return 0;
}