Cod sursă (job #486221)

Utilizator avatar AndreiCroitoru Andrei Croitoru AndreiCroitoru IP ascuns
Problemă Lalele (clasele 9-10) Compilator cpp | 1,03 kb
Rundă Arhiva de probleme Status evaluat
Dată 15 sept. 2019 13:12:40 Scor 0
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("lalele.in");
ofstream out("lalele.out");
struct ura
{
    int h,zi;
};
bool comp(ura x,ura y)
{
    if(x.h<y.h)
    return true;
    else
    return false;
}
ura v[5000001];
int main()
{
    int n,d,x,q=0,i,l,j;
    in>>n;
    for(i=1;i<=n;)
    {
        in>>d>>x;
        if(x!=0)
        for(j=1;j<=d;j++,i++)
        {
            v[++q].h=x;
            v[q].zi=i;
        }
        else
        {
            int ok=0;
            if(q%2==1)
            {
                q++;
                ok=1;
            }
            int k=q/2;
            if(ok==1)
            q--;
            for(l=1;l<=q;l++)
            {
                v[l].h+=(i-v[l].zi+1);
            }
            for(j=1;j<=d;j++)
            {
                nth_element(v+1,v+k+1,v+q+1,comp);
                out<<v[k].h<<'\n';
                q=q/2;
                k=q/2;
                ++i;
            }
        }
    }
    return 0;
}