Cod sursă (job #443425)

Utilizator avatar Cybot Stancila Ionut-Marian Cybot IP ascuns
Problemă Lalele (clasele 9-10) Compilator cpp | 1,49 kb
Rundă Arhiva de probleme Status evaluat
Dată 6 mar. 2019 19:06:05 Scor 30
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("lalele.in");
ofstream g("lalele.out");
unsigned long long n, d, v[5000001], zt, poz=0, i, x;

void actualizezvector(int plantatii)
{
    for (int counter=1;counter<=plantatii;counter++)
    {
        v[counter]=v[counter]+1;
    }
}

void swup(int a, int b)
{
    int aux=v[a];
    v[a]=v[b];
    v[b]=aux;
}

int partition(int low, int high)
{
    int pivot=v[high];
    int counter=low-1;
    for (int j=low;j<=high-1;j++)
    {
        if (v[j]<=pivot)
        {
            counter++;
            swup(counter, j);
        }
    }
    swup(counter+1, high);
    return (counter+1);
}

void quickSort(int low, int high)
{
    if (low<high)
    {
        int pi=partition(low, high);
        quickSort(low,pi-1);
        quickSort(pi+1, high);
    }
}

int main()
{
    f>>n;
    while (n)
    {
        f>>d>>x;
        if (x!=0)
        {
            n-=d;
            for (i=1;i<=d;i++)
            {
                poz++;
                v[poz]=x;
                actualizezvector(poz);
            }
        }
        else
        {
            n-=d;
            quickSort(1,poz);
            for (i=1;i<=d;i++)
            {
                if (poz%2==0)
                poz=poz-poz/2;
                else
                poz=poz-poz/2-1;
                g<<v[poz+1]<<'\n';
                actualizezvector(poz);
            }
        }
    }
    return 0;
}