Cod sursa(job #2291072)

Utilizator gundorfMoldovan George gundorf Data 27 noiembrie 2018 14:54:09
Problema Lupul Urias si Rau Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.59 kb
#include <iostream>
#include <fstream>
#include <utility>
#include <queue>
#include <vector>
#define Nmax 100005
#include <algorithm>
using namespace std;
ifstream fin ("lupu.in");
ofstream fout("lupu.out");
int n,x,l;
class pereche
{
public :
    int lana,prioritate;
    pereche (int pr=0,int ln=0)
    {
        lana=ln;
        prioritate=pr;
    }

    pereche (const pereche & aux)
    {
        lana=aux.lana;
        prioritate =aux.prioritate;
    }

    bool operator < (const pereche & aux) const
    {
        return (lana <aux.lana);
    }
};

priority_queue<pereche> oi;

int main()
{int i;
int response =0;

    fin>>n>>x>>l;
    vector <pair<int,int>> date;
    for (i=1;i<=n;i++)
    {   pair<int,int>aux;
        fin>>aux.first>>aux.second;
        if (aux.first<=x)
        {aux.first=(x-aux.first)/2; //cate ture poate sta oaia in raza de actiune a lupului.
        //in date[i].second se retine lana
        date.push_back(aux);
        }
    }
    sort (date.begin(),date.end());//le sortez dupa prioritate

   // for (pair<int,int> aux:date)
     //   fout<<aux.first<<" "<<aux.second<<"\n";

    int dim=date.size();
    int cnt=dim-1;

    for (i=date[dim-1].first;i>=0;i--)
    { int max_ln=0;

        while (date[cnt].first==i){

            pereche aux;
            aux.lana=date[cnt].second;
            aux.prioritate=date[cnt].first;

            oi.push(aux);
            cnt--;
        }
       if (oi.size()>0)
        {response += oi.top().lana;
        oi.pop();
        }
    }
    fout<<response;
    return 0;
}