Cod sursa(job #2272813)

Utilizator ivan.tudorIvan Tudor ivan.tudor Data 30 octombrie 2018 18:08:18
Problema Lupul Urias si Rau Scor 92
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
const int N=100005;
pair<long long,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,"%lld%d",&v[i].first,&v[i].second);
      v[i].first=(long long)(x-v[i].first)/l+1;
    }
    sort(v+1,v+n+1);
    long long val,j;
    i=n;
    h.push(v[i].second);
    while(i>0 && v[i].first==v[i-1].first){
      i--;
      h.push(v[i].second);
    }
    i--;
    while(i>0){
      val=v[i+1].first;
      j=val-v[i].first;
      while(!h.empty() && j>0){
        s+=(long long)h.top();
        h.pop();
        j--;
      }
      h.push(v[i].second);
      while(i>0 && v[i].first==v[i-1].first){
        i--;
        h.push(v[i].second);
      }

      i--;
    }
    j=v[1].first;
    while(!h.empty() && j>0){
      s+=(long long)h.top();
      h.pop();
      j--;
    }
    fprintf(fout,"%lld",s);
    return 0;
}