Cod sursa(job #2492320)

Utilizator sefuvostruHoszu Adryel sefuvostru Data 14 noiembrie 2019 15:42:24
Problema Lupul Urias si Rau Scor 4
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
ifstream f("lupu.in");
ofstream g("lupu.out");
typedef pair <unsigned long long int,unsigned long long int> copil;
copil v[200001],aux;
priority_queue<unsigned long long int> coada;
int n,ok;
unsigned long long int x,l2,suma;
int partitie (int l,int r)
{
    int pivot=v[r].first,poz=l-1;
    for(int j=l;j<=r;j++)
    {
        if(v[j].first<=pivot)
        {
            poz++;
            aux=v[poz];
            v[poz]=v[j];
            v[j]=aux;
        }
    }
    return poz;
}
void quicksort(int l,int r)
{
    if(l<r)
    {
     int pivot=partitie(l,r);
     quicksort(l,pivot-1);
     quicksort(pivot+1,r);
    }
}
int main()
{
   f>>n>>x>>l2;
   for(int i=1;i<=n;i++)
    f>>v[i].first>>v[i].second;
   quicksort(1,n);
   // sort(v, v+n);
for(int i=1;i<=n;i++)
{
    ok=1;
    int calc=(x-v[i].first)/l2;
    coada.push(v[i].second);
    while(ok)
    {
        if(i+1<=n)
        {
             int calc2=(x-v[++i].first)/l2;
             if(calc2==calc)
            coada.push(v[i].second);
       else
       {
           ok=0;
           i--;
       }
        }
       else
            ok=0;
    }
    suma+=coada.top();
    coada.pop();
}
    g<<suma;
    return 0;
}