Cod sursa(job #2928084)
Utilizator | Gabriel 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;
}