Cod sursă (job #95656)

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

struct flori
{
    int h,z;

} v[5000001];

bool cmp(flori a,flori b)
{
    return a.h<b.h;
}

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++)
            {
                v[++nr].h=b;
                v[nr].z=++zi;
            }
        }
        else
        {
            int j=a;
            while(j>0)
            {
                zi++;
                for(i=1; i<=nr; i++)
                {
                    v[i].h+=zi-v[i].z;
                    v[i].z=zi;
                }
                nth_element(v+1,v+nr/2+1,v+nr+1,cmp);
                fprintf(fout,"%d\n",v[nr/2+1]);
                nr/=2;
                j--;
            }
        }
        sum+=a;
    }

    return 0;
}