Pagini recente » Cod sursa (job #3199495) | Cod sursa (job #2922909) | preONI 2008 - Clasament Runda 1, Clasele 5-8 | Cod sursa (job #1455253) | Cod sursa (job #769332)
Cod sursa(job #769332)
#include<stdio.h>
FILE *file;
int N, v[1000001], hsize;
void heapify(int pos)
{
int next = pos, aux;
while(1)
{
if(pos << 1 <= hsize && v[next] < v[pos<<1])
next <<= 1;
if((pos << 1) + 1 <= hsize && v[next] < v[(pos<<1) + 1])
next = (pos << 1) + 1;
if(next == pos) break;
aux = v[pos]; v[pos] = v[next]; v[next] = aux;
pos = next;
}
}
int main()
{
int i, nr = 0, prev = 0;
file = fopen("elmaj.in", "r");
fscanf(file, "%d", &N);
for(hsize = N, i = N; i; --i)
{
fscanf(file, "%d", &v[i]);
if(i <= (N >> 1))
heapify(i);
}
fclose(file);
file = fopen("elmaj.out", "w");
for(; hsize;)
{
if(prev == v[1]) nr++;
else if(nr > (N >> 1))
{
fprintf(file, "%d %d\n", prev, nr);
break;
}
else
{
nr = 1;
prev = v[1];
}
v[1] = v[hsize--];
heapify(1);
}
if(!hsize) fprintf(file, "-1\n");
fclose(file);
return 0;
}