Cod sursa(job #3324274)

Utilizator YannYann Spataru Yann Data 21 noiembrie 2025 21:13:55
Problema Carnati Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <fstream>

using namespace std;
    ifstream cin("carnati.in");
    ofstream cout("carnati.out");
    int v[1501];
int main()
{
    int n,n2,c,k,maxx=-1000001,s,t,p,inc,st,dr;
    cin>>n>>c;
    for(n2=1;n2<=n;n2++) {
        cin>>t>>p;
        if(v[t]==0)
            v[t]=p;
        else
            v[t]=min(v[t],p);
    }
    s=0;
    p=-1;
    inc=0;
    for(st=0,dr=0;st<=dr && st<=1500 && dr<=1500;dr++) {
        if(v[dr]>0) {
            s++;
            if(p==-1)
                p=v[dr];
            else {
                if(s*min(p,v[dr])-(dr-st+1)*c>0)
                    p=min(p,v[dr]);
                else
                    s--;
            }
        }
        if(s*p-(dr-st+1)*c>maxx)
            maxx=s*p-(dr-st+1)*c;
        if(dr==1499) {
            st++;
            dr=st-1;
            s=0;
            p=-1;
            inc=0;
        }
    }
    /*for(n2=0;n2<=1500;n2++) {
        if(s*p-(n2-inc+1)*c<0) {
            s=0;
            inc=n2;
        }
        if(v[n2]>0) {
            s++;
            if(p==-1)
                p=v[n2];
            else {
                if(s*min(p,v[n2])-(n2-inc+1)*c>0)
                    p=min(p,v[n2]);
                else
                    s--;
            }
        }
        if(s*p-(n2-inc+1)*c>maxx)
            maxx=s*p-(n2-inc+1)*c;
    }*/
    cout<<maxx;
    return 0;
}