Cod sursă (job #95661)

Utilizator avatar vladp Vlad Panait vladp IP ascuns
Problemă Lalele (clasele 9-10) Compilator cpp | 0,96 kb
Rundă Tema 9 clasele 9-10 2014/15 Status evaluat
Dată 7 dec. 2014 16:44:21 Scor 95
#include <stdio.h>
#include <algorithm>
using namespace std;

int h[5000001];
int z[5000001];

int main()
{
    FILE *fin,*fout;

    fin=fopen("lalele.in","r");
    fout=fopen("lalele.out","w");

    int i,n,sum=0,nr=0,zi=0;

    fscanf(fin,"%d",&n);

    while(sum < n)
    {
        int a,b;
        fscanf(fin,"%d%d",&a,&b);

        if( b != 0)
        {
            for(i=1; i<=a; i++)
            {
                h[++nr]=b;
                z[nr]=++zi;
            }
        }
        else
        {
            int j=a;
            while(j>0)
            {
                zi++;
                for(i=1; i<=nr; i++)
                {
                    h[i]+=zi-z[i];
                    z[i]=zi;
                }
                nth_element(h+1,h+nr/2+1,h+nr+1);
                fprintf(fout,"%d\n",h[nr/2+1]);
                nr/=2;
                j--;
            }
        }
        sum+=a;
    }

    return 0;
}