Pagini recente » Cod sursa (job #2006050) | Cod sursa (job #2363784) | Cod sursa (job #1586546) | Cod sursa (job #133574) | Cod sursa (job #991946)
Cod sursa(job #991946)
#include<cstdio>
#include <algorithm>
using namespace std;
int v[6000001], n, parent[600001];
void citire(){
freopen("ssm.in", "r", stdin);
scanf("%d ",&n);
for(int i = 1; i <= n; ++i)
scanf("%d ",&v[i]);
}
void solve(){
//cu ce incepem?:))
// pai dp[0] = 0, dar asta e deja, deci facem direct dp[i]
// calculezi dp[i]
int rez = -0x3f3f3f3f, poz = 0, x = 0;
int dp[2] = {0, 0};
int P = 0, Q = 1;
for (int i = 1; i <= n; ++i) {
if(dp[P] + v[i] < v[i])
dp[Q] = v[i];
else dp[Q] = dp[P] + v[i],
parent[i] = i - 1;
if(rez < dp[Q])
rez = dp[Q],
poz = i;
P ^= 1;
Q ^= 1;
dp[Q] = 0;
}
printf ("%d ", rez);
x = poz;
while(parent[x])
x = parent[x];
printf("%d %d\n", x, poz);
}
int main(){
freopen("ssm.out", "w", stdout);
citire();
solve();
}