Pagini recente » Cod sursa (job #588852) | Cod sursa (job #3224102) | Cod sursa (job #2893130) | Cod sursa (job #3227003) | Cod sursa (job #769339)
Cod sursa(job #769339)
#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, sw = 1;
file = fopen("elmaj1.in", "r");
fscanf(file, "%d", &N);
for(i = N; i; --i)
fscanf(file, "%d", &v[i]);
fclose(file);
for(hsize = N, i = N >> 1; i; --i)
heapify(i);
file = fopen("elmaj.out", "w");
for(; hsize;)
{
if(prev == v[1])
nr++;
else if(nr > (N >> 1))
{
fprintf(file, "%d %d\n", prev, nr);
sw = 0;
break;
}
else
{
nr = 1;
prev = v[1];
}
v[1] = v[hsize--];
heapify(1);
}
if(sw && nr > (N>>1))
fprintf(file, "%d %d\n", prev, nr);
else
fprintf(file, "-1\n");
fclose(file);
return 0;
}