Cod sursa(job #3143813)

Utilizator StefanromanulStefan Parus Stefanromanul Data 2 august 2023 12:47:47
Problema Lupul Urias si Rau Scor 8
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
struct oaie{
int lana,dist;
};
struct nr{
int l,zile;
};
bool sor(oaie a,oaie b)
{
    if(a.dist!=b.dist)
    {
        return a.dist<b.dist;
    }
    else return a.lana>b.lana;
}
bool sor1(nr a,nr b)
{
    if(a.l!=b.l)
        return a.l>b.l;
    else return a.zile<b.zile;
}
int main()
{
    ifstream cin("lupu.in");
    ofstream cout("lupu.out");

    int n;cin>>n;
    int x,l;
    cin>>x>>l;
    oaie v[n];
    for(int i=0;i<n;i++)
    {
        cin>>v[i].dist>>v[i].lana;
        v[i].dist=(x-v[i].dist)/l+1;
    }
    sort(v,v+n,sor);
    nr v1[n];
    int k=0;
    int distact=v[0].dist;
    int a=0;
    for(int i=0;i<n;i++)
    {
        a=0;
        while(v[i].dist<distact)
            i++;
        while(v[i].dist==distact && a<distact)
        {

            v1[k].l=v[i].lana;
            v1[k++].zile=v[i].dist;
            a++;
            i++;
        }
        if(v[i].dist!=distact)
            i--;

        distact++;
    }
    sort(v1,v1+k,sor1);
    int zc=1;
    long long sum=0;
    for(int i=0;i<k;i++)
    {
        if(v1[i].zile>=zc)
        {
            sum+=v1[i].l;
            zc++;
        }

    }
    cout<<sum;
    return 0;
}