Cod sursa(job #2292440)

Utilizator SmitOanea Smit Andrei Smit Data 29 noiembrie 2018 16:08:26
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <bits/stdc++.h>

using namespace std;

struct oaie
{
    int dist,lana;
};

int N,X,L;
long long sol;
oaie T[100003];
priority_queue<int>q;

inline bool CMP(const oaie A, const oaie B)
{
    return A.dist < B.dist;
}

void Citire()
{
    int i;
    oaie w;
    ifstream fin("lupu.in");
    fin>>N>>X>>L;
    for(i=1;i<=N;++i)
    {
        fin>>w.dist>>w.lana;
        T[i] = w;
    }
    fin.close();
}

void Solutie()
{
    int i,st,dr;
    st = 0;
    dr = X%L;

    sol=0;
    for(i=1 ; dr<=X ; st=dr+1,dr+=L)
    {
        while(i<=N && st<=T[i].dist && T[i].dist<=dr)///le pun pe toate din acest interval in coada
        {
            q.push(T[i].lana);
            i++;
        }
        if(!q.empty())
        {
            //cout<<q.top()<<"\n";
            sol+=(q.top());
            q.pop();
        }

    }
}

void Afisare()
{
    ofstream fout("lupu.out");
    fout<<sol<<"\n";
    fout.close();
}

int main()
{
    Citire();
    sort(T+1,T+N+1,CMP);
    Solutie();
    Afisare();
    return 0;
}