Pagini recente » Cod sursa (job #2805902) | Cod sursa (job #1737903) | Cod sursa (job #3158393) | Cod sursa (job #2966340)
#include <fstream>
using namespace std;
ifstream cin( "euro.in" );
ofstream cout( "euro.out" );
long long dp[ 34570 ];
int l[ 34570 ];
int q[ 34570 ];
int s[ 34570 ];
int n, m, t;
int main()
{
int V;
m = 1;
cin >> n >> t;
for( int i = 1; i <= n; i++ ) {
cin >> V;
s[ i ] = s[ i - 1 ] + V;
m += ( q[ m ] < 0 );
q[ m ] += V;
l[ m ] = i;
}
const long long INF = ( 1LL << 60 );
for( int i = 1; i <= m; i++ ) {
dp[ i ] = -INF;
for( int j = i; j >= 0 && ( i - j ) * ( i - j ) <= t + 1000; j-- )
dp[ i ] = max( dp[ i ], dp[ j ]+ (long long)( s[ l[ i ] ] - s[ l[ j ] ] ) * l[ i ] - t );
}
cout << dp[ m ] << '\n';
return 0;
}