Cod sursa(job #2399918)

Utilizator smoc_georgemarianSmoc George-Marian smoc_georgemarian Data 8 aprilie 2019 10:30:18
Problema Lupul Urias si Rau Scor 84
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>
#define NMAX 100009
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");

struct nume{long long int c;long long int d;};

 bool operator <(nume x, nume y)
{
 return x.c<y.c;
}

bool compar(nume x,nume y)
{
  return x.d<y.d ;
}
priority_queue<nume>C;
nume v[NMAX];

long long int N,X,L;
void citire();
int main()
{citire();
    return 0;
}
void citire()
{
 int i;
 fin>>N>>X>>L;
 for(i=1;i<=N;i++)
        fin>>v[i].d>>v[i].c;
 sort(v+1,v+N+1,compar);

 ///impart in bucati
 long long int rest=(X+1)%L;
 long long int sum=0;
 i=1;
 if(rest)
    {for(i=1;i<=N && v[i].d<=rest-1;i++)
        C.push(v[i]);
     if(!C.empty())
     {sum+=C.top().c;

     C.pop();
     }
    }
  do{

    rest+=L;
    for(;i<=N && v[i].d<=min(rest-1,X);i++)
      C.push(v[i]);
    if(!C.empty())
    {sum+=C.top().c;
    C.pop();
    }
  }
  while(i<=N);
  fout<<sum;
}