Pagini recente » Cod sursa (job #2086062) | Cod sursa (job #1754394) | Cod sursa (job #502370) | Cod sursa (job #670349) | Cod sursa (job #36416)
Cod sursa(job #36416)
#include <stdio.h>
long long tx,ty,x[40001][6],y[40001][6],z[40001];
FILE *f;
int i,j,n,t;
int main (void)
{
f=fopen("euro.in","r");
fscanf(f,"%d %d",&n,&t);
for(i=1;i<=n;i++) fscanf(f,"%lld",&z[i]);
fclose(f);
for(i=1;i<=n;i++)
{
// x in mana
// y in cont
x[i][1]=x[i-1][1]+z[i]*i-t;
y[i][1]=0; // mana+ <>
x[i][2]=x[i][1]; //mana+
y[i][2]=0;
x[i][3]=x[i][1]; // cont+
y[i][3]=0;
x[i][4]=x[i][1]; // cont-
y[i][4]=0;
x[i][0]=x[i][1]; // supposed earnings max
y[i][0]=y[i][1];
x[i][5]=x[i][1]; // daca tot max chestie
y[i][5]=y[i][1];
// initializare pt a avea un maxim sa compar
for(j=0;j<=5;j++)
{
tx=x[i-1][j]; // daca vars in cont
ty=y[i-1][j]+z[i];
// 0, chestie+
if ((tx+ty*i)>(x[i][0]+y[i][0]*i))
{
x[i][0]=tx;
y[i][0]=ty;
}
// 5, chestie+ daca tot...
if (tx+ty*i+ty>x[i][5]+y[i][5]*i+y[i][5]);
{
x[i][5]=tx;
y[i][5]=ty;
}
// 1, mana+<>
// -
// 2, mana+
if (tx>x[i][2] || (tx==x[i][2]&&ty>y[i][2]))
{
x[i][2]=tx;
y[i][2]=ty;
}
// 3, cont+
if (ty>y[i][3] || (ty==y[i][3] && tx>x[i][3]))
{
x[i][3]=tx;
y[i][3]=ty;
}
// 4, cont-
if (ty<y[i][4] || (ty==y[i][4] && tx>x[i][4]))
{
x[i][4]=tx;
y[i][4]=ty;
}
tx=x[i-1][j]+(y[i-1][j]+z[i])*i-t; // daca schimb
ty=0;
// 1, mana+<>
if (tx>x[i][1]) x[i][1]=tx;
// 2, mana+
if (tx>x[i][2] || (tx==x[i][2]&&ty>y[i][2]))
{
x[i][2]=tx;
y[i][2]=ty;
}
// 3, cont+
if (ty>y[i][3] || (ty==y[i][3] && tx>x[i][3]))
{
x[i][3]=tx;
y[i][3]=ty;
}
// 4, cont-
if (ty<y[i][4] || (ty==y[i][4] && tx>x[i][4]))
{
x[i][4]=tx;
y[i][4]=ty;
}
// 0, chestie+
if ((tx+ty*i)>(x[i][0]+y[i][0]*i))
{
x[i][0]=tx;
y[i][0]=ty;
}
// 5, chestie+ daca tot...
if (tx+ty*i+ty>x[i][5]+y[i][5]*i+y[i][5]);
{
x[i][0]=tx;
y[i][0]=ty;
}
}
}
f=fopen("euro.out","w");
fprintf(f,"%lld\n",x[n][1]);
fclose(f);
return 0;
}