Pagini recente » Cod sursa (job #1810632) | Cod sursa (job #157374) | Cod sursa (job #3001390) | Cod sursa (job #213630) | Cod sursa (job #2735595)
#include <bits/stdc++.h>
#define nozerous(x) (x & -x)
using namespace std;
ifstream fin("euro.in");
ofstream fout("euro.out");
const int NMAX(34580);
const long long inf(LLONG_MIN);
typedef long long ll;
ll dp[NMAX], v[NMAX], sum[NMAX], AIB[NMAX];
int n, t;
void Add(ll val, int poz){
for(int i = poz; i <= n; i += nozerous(i))
AIB[poz] += val;
}
ll Query(int poz){
ll maxx = inf;
for(int i = poz; i >= 1; i -= nozerous(i))
maxx = max(maxx, AIB[i]);
return maxx;
}
int main()
{
fin >> n >> t;
for(int i = 1; i <= n; ++i){
fin >> v[i];
sum[i] = sum[i - 1] + v[i];
}
for(int i = 1; i <= n; ++i){
Add(v[i], 1);
Add(-v[i], i + 1);
dp[i] = -t + Query(i - 1);
Add(dp[i], i);
Add(-dp[i], i + 1);
}
fout << dp[n] << '\n';
return 0;
}