Cod sursă (job #383211)

Utilizator avatar mjmilan11 Mujdar Milan mjmilan11 IP ascuns
Problemă Lalele (clasele 9-10) Compilator cpp | 1,15 kb
Rundă Arhiva de probleme Status evaluat
Dată 23 iun. 2018 14:11:04 Scor 100
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

ifstream fin("lalele.in");
ofstream fout("lalele.out");

const int NMAX = 5000005;

int v[NMAX],ult[NMAX];

int main()
{
    int n,k=0,p=0,x,d; /// xD xD xD
    fin >> n;
    int i=1;
    while(i<=n)
    {
        fin >> d >> x; /// xD
        if(x>0)
        {
            for(int j=1;j<=d;j++)
            {
                k++;
                v[k]=x;
                p++;
                ult[k]=p;
            }
        }
        else
        {
            for(int j=1;j<=k;j++)
            {
                v[j]=v[j]+p-ult[j]; /// pentru cresterea lalelelor in cele d zile ( prima creste k-1 in plus , a doua k-2 etc... )
                ult[j]=p;
            }
            for(int j=1;j<=d;j++)
            {
                p++;
                nth_element(v+1,v+k/2+1,v+k+1); ///  http://www.cplusplus.com/reference/algorithm/nth_element/
                k/=2; /// se injumatatesc lalele;
                fout << v[k+1]+p-ult[j] << '\n';
            }
        }
        i+=d; /// lucram din d in d zile ( d - days)
    }
    return 0;
}