Cod sursa(job #1785764)

Utilizator stefan_creastaStefan Creasta stefan_creasta Data 21 octombrie 2016 21:54:55
Problema Lupul Urias si Rau Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <algorithm>
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
const int N = 100005;
struct ABC
{
    int lana, timp;
};
priority_queue<int>v;
vector<ABC>a[N];

int main()
{
    ABC nr;
    long long int afis = 0;
    int n, distlim, distmove, distoaie, lanaoaie, al, i, j, lanamax;
    freopen("lupu.in","r",stdin);
    freopen("lupu.out","w",stdout);
    scanf("%d%d%d", &n, &distlim, &distmove);
    for(i = 1;i <= n; ++i)
    {
        scanf("%d%d", &distoaie, &lanaoaie);
        if(distoaie <= n)
        {
            al = (distlim - distoaie) / distmove + 1;
            al = min(al , n);
            nr.timp = al;
            nr.lana = lanaoaie;
            a[al].push_back(nr);
        }
    }
    for(i = n;i > 0; --i)
    {
        for(j = 0;j < a[i].size(); ++j)
        {
            v.push(a[i][j].lana);
        }
        if(!v.empty())
        {
            lanamax = v.top();
            afis += lanamax;
            v.pop();
        }
    }
    printf("%lld\n",afis);
    return 0;
}