Cod sursa(job #3340091)

Utilizator Dia3141Costea Diana Stefania Dia3141 Data 12 februarie 2026 01:01:53
Problema Carnati Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <algorithm>
#define nmax 2005
#define t first
#define p second
using namespace std;
ifstream cin("carnati.in");
ofstream cout("carnati.out");
int n,c,sol;
pair<int,int>v[nmax];
signed main()
{
    cin>>n>>c;
    for(int i=1;i<=n;i++)
        cin>>v[i].t>>v[i].p;
    sort(v+1,v+n+1);
    for(int i=1;i<=n;i++){
        int pret=v[i].p,s=0,last=-1;
        for(int j=1;j<=n;j++){
            if(last==-1){/// am inchis magazinul si il deschid acum
                if(v[j].p>=pret&&pret-c>0){
                    s=pret-c;
                    last=v[j].t;
                }
            }else{
                if(s-c*(v[j].t-last)+pret*(v[j].p>=pret)<=0){
                    s=0;
                    if(v[j].p>=pret)
                        j--;/// ma intorc
                    last=-1;
                }else{
                    s=s-c*(v[j].t-last)+pret*(v[j].p>=pret);
                    last=v[j].t;
                }
            }
            sol=max(sol,s);
        }
    }
    cout<<sol;
    return 0;
}