Cod sursă (job #363411)

Utilizator avatar TheodorVlad Paraschiv Theodor Vlad TheodorVlad IP ascuns
Problemă Lalele (clasele 9-10) Compilator cpp | 2,01 kb
Rundă Arhiva de probleme Status evaluat
Dată 12 mar. 2018 09:29:42 Scor 30
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;
void quickSort(int arr[], int left, int right) {

      int i = left, j = right;

      int tmp;

      int pivot = arr[(left + right) / 2];



      /* partition */

      while (i <= j) {

            while (arr[i] < pivot)

                  i++;

            while (arr[j] > pivot)

                  j--;

            if (i <= j) {

                  tmp = arr[i];

                  arr[i] = arr[j];

                  arr[j] = tmp;

                  i++;

                  j--;

            }

      };



      /* recursion */

      if (left < j)

            quickSort(arr, left, j);

      if (i < right)

            quickSort(arr, i, right);

}

int main()
{
    int n,i,z,x,j;
    ifstream f("lalele.in");
    ofstream g("lalele.out");
    f>>n;
    int a[n],w;
    i=0;
    while (!f.eof())
    {
        f>>z;
        f>>x;
        if (x!=0)
        {
            x++;
            for (j=i+1;j<=i+z;j++)
            {
                a[j]=x;
                x++;
            }
            for (j=1;j<=i;j++)
                a[j]=a[j]+z;
            j=i+1;
            i=i+z;
            cout<<i<<"\n";
            //for (j=1;j<=i;j++)
                //cout<<a[j]<<" ";
            //cout<<"\n";
        }
        else
        {
            quickSort(a,1,i);
            for (j=1;j<=i;j++)
                cout<<a[j]<<" ";
            cout<<"\n";
            while (z>0)
            {
            if (i%2==0)
            {
                i=i/2;
                g<<a[i+1]<<"\n";
                for (j=1;j<=i;j++)
                    a[j]++;

            }
            else
            {
                i=i/2+1;
                g<<a[i]<<"\n";
                i--;
                for (j=1;j<=i;j++)
                    a[j]++;
            }
            z--;
            }
        }

    }
    f.close();
    g.close();
    return 0;
}