Cod sursa(job #2928084)

Utilizator gabriel.9619Gabriel Stefan Tita gabriel.9619 Data 22 octombrie 2022 10:25:59
Problema Carnati Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("carnati.in");
ofstream fout("carnati.out");
struct om{
    int t, p;
}v[2001];

bool cmp(om a, om b)
{
    if(a.t!=b.t)
    {
        return a.t<b.t;
    }
    return a.p<b.p;
}

int main()
{
    int n, poz, s=0, smax, k, i, j;
    fin>>n>>k;
    for(i=1;i<=n;i++)
    {
        fin>>v[i].t>>v[i].p;
    }
    sort(v+1, v+n+1, cmp);
    for(i=1;i<=n;i++)
    {
        int pret=v[i].p;
        s=0;
        for(j=1;j<=n;j++)
        {
            if(v[j].p>=pret)
            {
                poz=v[j].t-1;
                break;
            }
        }
        for(j=1;j<=n;j++)
        {
            if(pret<=v[j].p)
            {
                if(max(s+pret-(v[j].t-poz)*k, pret-k)==pret-k)
                {
                    s=pret-k;
                    poz=v[j].t;
                }
                else
                {
                    s=s+pret-(v[j].t-poz)*k;
                    poz=v[j].t;
                }
                smax=max(s, smax);
            }
        }
    }
    fout<<smax;
}