Cod sursa(job #3347617)

Utilizator alexkAlexandru Kelemen alexk Data 17 martie 2026 16:16:17
Problema Lupul Urias si Rau Scor 8
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
const int NMax=1e3;
int N, X, L;
long long int ans;
vector<vector<int>>v(NMax+5);
vector<int> w(NMax+5);
int main()
{
    cin>>N>>X>>L;
    int maxpas=X/L+1;
    for(int i=1;i<=N;i++)
    {
        int dist, lana;
        cin>>dist>>lana;
        int idx=((X-dist)/L)+1;
        v[idx].push_back(lana);
        w[idx]++;
    }

    for(auto& row : v)
        sort(row.begin(), row.end(), greater<int>());
    for(int pas=1;pas<=maxpas;pas++)
    {
        /// v[y] are max(y-pas+1,0) termeni relevanti
        /// ne uitam pe diagonala
        int bestc=-1;
        for(int ci=pas;ci<=maxpas;ci++)
        {
            int cj=ci-pas;
            /// ne uitam la s[ci][cj]
            if(cj<w[ci])bestc=max(bestc, v[ci][cj]);
        }
        ans+=bestc;
    }
    cout<<ans;
    return 0;
}