Pagini recente »
Borderou de evaluare (job #104009)
|
Borderou de evaluare (job #155003)
|
Borderou de evaluare (job #281034)
|
Borderou de evaluare (job #781504)
|
Cod sursă (job #574478)
Cod sursă (job
#574478)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#define mx 500001
using namespace std;
ifstream fin("lalele.in");
ofstream fout("lalele.out");
int n, nr, ziua[mx], h[mx], total;
int partition(int arr[], int low, int high)
{
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high- 1; j++)
{
if (arr[j] <= pivot)
{
i++;
swap(arr[i], arr[j]);
}
}
swap(arr[i + 1], arr[high]);
return (i + 1);
}
void quickSort(int arr[], int low, int high)
{
if (low < high)
{
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
int main()
{
int zile, x;
fin>>nr;
while(fin>>zile>>x)
{
if(x)
{
for(int i=1;i<=zile;i++)
{
total++;
ziua[++n]=total;
h[n]=x;
}
}
else
{
for(int i=1;i<=n;i++)
{
h[i]=h[i]+total-ziua[i];
ziua[i]=total;
}
for(int i=1;i<=zile;i++)
{
total++;
quickSort(h,1,n);
fout<<h[1+n/2]+total-ziua[1+n/2]<<'\n';
n=n/2;
}
}
}
}