Cod sursa(job #3361545)

Utilizator DobrEdiDobrescu Eduard DobrEdi Data 25 iulie 2026 12:41:48
Problema Carnati Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

ifstream cin("carnati.in");
ofstream cout("carnati.out");

//int t[2001], p[2001];

int main(){
    int n, c, mx=0;
    vector<pair<int, int>> cl;
    cin>>n>>c;
    for(int i=1;i<=n;i++){
        int in1, in2;
        cin>>in1>>in2;
        cl.push_back({in1, in2});
    }
    sort(cl.begin(),cl.end());
    for(int pret=0;pret<n;pret++){
        int kd[2001], st=0;
        for(int i=0;i<=1500;i++){
            int sum=0;
            while(st<n && cl[st].first==i){
                if(cl[st].second>=cl[pret].second) sum+=cl[pret].second;
                st++;
            }
            kd[i]=sum;
        }
        int sum=0, cnt=1;
        for(int i=0;i<=1500;i++){
            sum+=kd[i];
            mx=max(mx, sum-cnt*c);
            if(sum-cnt*c<0){
                sum=0;
                cnt=0;
            }
            cnt++;
        }
    }
    cout<<mx;
}