Cod sursa(job #1550262)

Utilizator emanuel_rRamneantu Emanuel emanuel_r Data 13 decembrie 2015 14:27:14
Problema Lupul Urias si Rau Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
#include<cstdlib>

using namespace std;

ifstream f("lupu.in");
ofstream g("lupu.out");

vector <int> G[200005];
priority_queue <int> Q;
int n, x, l, sol, pos;
char Buffer[10000000];
int const Buffer_Size = 10000000;

void citeste(int & nr)
{
    nr = 0;
    while(Buffer[pos] < '0' || Buffer[pos] > '9')
        pos++;
    while(Buffer[pos] >= '0' && Buffer[pos] <= '9')
        nr = nr*10 + Buffer[pos++] - '0';
}

void citire()
{
    freopen("lupu.in", "r", stdin);
    fread(Buffer, 1, Buffer_Size, stdin);

    int i, lana, dist, tura;

    citeste(n);
    citeste(x);
    citeste(l);

    for(i=1; i<=n; i++){
        citeste(dist); citeste(lana);
        if(dist <= x){
            tura = dist/l + ((dist%l) > (x%l)) + 1;
            G[tura].push_back(lana);
        }
    }
}

void rez()
{
    int i, idx, j;

    for(i = 1; i <= x/l + 1; i++){
        for(j=0; j < G[i].size(); j++){cout<<G[i][j]<<" ";
            Q.push(G[i][j]);
        }
        if(Q.size()){
            sol += Q.top();
            Q.pop();
        }
        cout<<"\n";
    }
    g<<sol<<"\n";
}

int main()
{
    citire();
    rez();
    return 0;
}