Cod sursa(job #2957532)

Utilizator BalasaRaduBalasa Radu BalasaRadu Data 22 decembrie 2022 19:21:05
Problema Carnati Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <bits/stdc++.h>
#define int long long
using namespace std;

ifstream fin("carnati.in");
ofstream fout("carnati.out");

const int dim=2e3+10,inf=1e18;

struct elem{
    int t,p;
    bool operator<(const elem &other) const{
        return t<other.t;
    }
}v[dim];

int n,c;

signed main(){
        fin>>n>>c;
    for(int i=1;i<=n;i++){
        fin>>v[i].t>>v[i].p;
    }
    sort(v+1,v+n+1);
    int ans=-inf;
    for(int i=1;i<=n;i++){
        int l_val=0,r_val=0,cnt=0;
        for(int j=i;j>=1;j--){
            if(v[j].p>=v[i].p){
                cnt++;
            }
            l_val=max(l_val,cnt*v[i].p-c*(v[i].t-v[j].t+1));
        }
        cnt=0;
        for(int j=i;j<=n;j++){
            if(v[j].p>=v[i].p){
                cnt++;
            }
            r_val=max(r_val,cnt*v[i].p-c*(v[j].t-v[i].t+1));
        }
        ans=max({ans,l_val,r_val,l_val+r_val-v[i].p+c});
    }
        fout<<ans<<endl;
}