Cod sursa(job #2272798)

Utilizator ivan.tudorIvan Tudor ivan.tudor Data 30 octombrie 2018 17:50:41
Problema Lupul Urias si Rau Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <iostream>
#include<cstdio>
#define val second
#define i first
#include<algorithm>
#include<queue>
using namespace std;
const int N=1000005;
pair<int,int> v[N];
priority_queue<int> h;
long long s;
int main()
{
    FILE*fin,*fout;
    fin=fopen("lupu.in","r");
    fout=fopen("lupu.out","w");
    int n,i,x,l;
    fscanf(fin,"%d%d%d",&n,&x,&l);
    for(i=1;i<=n;i++){
      fscanf(fin,"%d%d",&v[i].i,&v[i].val);
      v[i].i=(x-v[i].i)/l;
    }
    sort(v+1,v+n+1);
    int val=x/l;
    i=n;
    while(val>=0){
      while(i>0 && v[i].i>=val){
        h.push(v[i].val);
        i--;
      }
      if(!h.empty()){
        s+=(long long)h.top();
        h.pop();
        val--;
      }
    }
    fprintf(fout,"%lld",s);
    return 0;
}