Cod sursa(job #2401824)

Utilizator adiaioanaAdia R. adiaioana Data 10 aprilie 2019 09:18:23
Problema Lupul Urias si Rau Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
int n,x,l,nv,nm,sum,d,a;
vector <pair<int,int>> v;
void add(int A,int NM);
void print();
int main()
{
    cin>>n>>x>>l;
    v.push_back({0,0});
    for(int i=1;i<=n;i++)
    {
        cin>>d>>a;
        if(x>=d)
            nm=(x-d)/max(1,l);
        else nm=-1;
        add(a,nm);
        //print();
    }
    int nv=0;
    for(int i=1;i<=n;i++)
    {
        nv=log2(i);
        if(v[i].second>=nv)
            sum+=v[i].first;
    }
    cout<<sum<<'\n';
    return 0;
}
void add(int A,int NM)
{
    int el1=0,el2=0;
    v[++v[0].first]={A,NM};
    int poz=v[0].first;
    while(poz/2>0 && (v[poz].first >v[poz/2].first ||(v[poz].first==v[poz/2].first && v[poz].second <v[poz/2].second) ))
    {
        el1=v[poz].first;
        el2=v[poz/2].first;
        swap(v[poz],v[poz/2]);
        poz=poz/2;
    }
}
void print()
{
    cout<<v[0].first<<'\n';
    for(int i=1; i<=v[0].first; i++)
        cout<<v[i].first <<' '<<v[i].second <<" | ";
    cout<<'\n';
    cout<<" ]]] "<<'\n';
}