Pagini recente » Autentificare | Monitorul de evaluare | Cod sursa (job #2008232) | Cod sursa (job #559743) | Cod sursa (job #1731569)
#include <fstream>
using namespace std;
ifstream fin("euro.in");
ofstream fout("euro.out");
const int MAX = 34575;
using LL = long long;
int N;
LL x;
LL K;
LL D[MAX];
LL sum[MAX];
void Read();
void Solve();
LL Trans( LL euro, int zi );
int main()
{
Read();
Solve();
fin.close();
fout.close();
return 0;
}
void Read()
{
int i;
fin >> N >> K;
for ( i = 1; i <= N; i++ )
{
fin >> x;
sum[i] = x + sum[i - 1];
}
}
void Solve()
{
int i, j;
for ( i = 1; i <= N; i++ )
{
D[i] = Trans(sum[i], i);
for ( j = 1; j < i; j++ )
if ( Trans(sum[i] - sum[j], i) + D[j] > D[i] )
D[i] = Trans(sum[i] - sum[j], i) + D[j];
}
fout << D[N];
}
LL Trans( LL euro, int zi )
{
LL rez = euro * (1LL*zi) - K;
return rez;
}