Pagini recente » Cod sursa (job #151887) | Cod sursa (job #2743976) | Cod sursa (job #1040494) | Cod sursa (job #1371517) | Cod sursa (job #664313)
Cod sursa(job #664313)
#include <fstream>
#include <cmath>
#include <vector>
#include <algorithm>
#define MAX 35000
using namespace std;
int n, t;
int solution[MAX];
int sume[MAX];
int day[MAX];
int negs;
void citire()
{
ifstream in("euro.in");
int x;
int s = 0;
in>>n>>t;
for(int i = 1; i < n; i++)
{
in>>x;
s += x;
if(s < 0)
{
sume[++negs] = s;
day[negs] = i;
s = 0;
}
}
in>>x;
s += x;
sume[++negs] = s;
day[negs] = n;
in.close();
}
void solve()
{
int actual = 0;
for(int i = 1; i <= negs; i++)
{
solution[i] = solution[i - 1] + sume[i] * day[i];
actual = sume[i];
for(int j = i - 1; j > 0; j--)
{
actual += sume[j];
solution[i] = max(solution[i], solution[j - 1] + actual * i);
}
solution[i] -= t;
}
}
void afisare()
{
ofstream out("euro.out");
out<<solution[negs];
out.close();
}
int main()
{
citire();
solve();
afisare();
return 0;
}