Pagini recente » Istoria paginii runda/simumaster | Istoria paginii runda/20_februarie_simulare_oji_2024_clasa_9/clasament | Istoria paginii runda/tema_grf1 | Istoria paginii runda/pregatire_oji_11-12_ | Cod sursa (job #374966)
Cod sursa(job #374966)
# include <fstream>
using namespace std;
int n, k, t[2003], p[2003], pmax=-(1<<30);
ofstream fout ("carnati.out");
int prof (int pr)
{
int c[2003], i, poz=2, smin, scur, s;
if (p[1]>=p[pr])
c[t[1]]=p[pr]-k;
else
c[t[1]]=-k;
smin=c[t[1]];
s=c[t[1]];
scur=c[t[1]];
for(i=t[1]+1;poz<=n;i++)
{
if (i==t[poz])
{
if (p[poz]>=p[pr])
c[i]=p[pr]-k;
else
c[i]=-k;
poz++;
while (t[poz-1]==t[poz] && poz<=n)
{
if (p[poz]>=p[pr])
c[i]+=p[pr];
poz++;
}
}
else
c[i]=-k;
scur+=c[i];
if (scur-smin>s)
s=scur-smin;
if (smin>scur)
scur=smin;
}
return s;
}
void read ()
{
ifstream fin ("carnati.in");
fin>>n>>k;
for (int i=1;i<=n;i++)
fin>>t[i]>>p[i];
}
void qsort (int st, int dr)
{
if (st<dr)
{
int i=st, j=dr, d=0, m=(st+dr)/2, a;
a=t[i], t[i]=t[m], t[m]=a;
a=p[i], p[i]=p[m], p[m]=a;
while (i<j)
{
if (t[i]>t[j])
{
a=t[i], t[i]=t[j], t[j]=a;
a=p[i], p[i]=p[j], p[j]=a;
d=1-d;
}
i+=d;
j-=1-d;
}
qsort (st, i-1);
qsort (i+1, dr);
}
}
int main ()
{
int pcur;
read ();
qsort (1, n);
for (int i=1;i<=n;i++)
{
pcur=prof(i);
if (pcur>pmax)
pmax=pcur;
}
fout<<pmax;
return 0;
}