Pagini recente » Cod sursa (job #1536439) | Cod sursa (job #1031503) | Cod sursa (job #902546) | Cod sursa (job #3252309) | Cod sursa (job #2703936)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
/*
char s[100100];
int v[100100], i, k;
int evaluare();
int paranteza_rotunda();
int paranteza_dreapta();
int secventa_suma_maxima();
*/
int n;
int v[600606];
int maxim, ans;
int st, dr, elem;
void secventa_suma_maxima(int v[100100], int k)
{
for(int i = 1; i <= k; i ++)
{
ans = ans + v[i];
if(ans > maxim)
{
maxim = ans;
dr = i;
elem = st;
}
if(ans < 0)
{
ans = 0;
st = i+1;
}
}
}
/*
int evaluare()
{
int suma = termen();
while(s[i] != NULL)
{
if(s[i] != ',')
{
if(s[i] == '(')
{
i++;
suma += paranteza_rotunda();
}
else if(s[i] == '[')
{
i++;
suma += paranteza_dreapta();
}
}
}
}
int paranteza_rotunda()
{
if(k)
{
return secventa_
}
k = 0;
int rezultat = 0;
int numar = 0;
while(s[i] != ')')
{
while(isdigit(s[i]))
{
numar = numar * 10 + s[i] - '0';
i++;
}
v[++k] = numar;
if(s[i] == ',')
continue;
if(s[i] == '(')
{
i++;
rezultat = rezultat + paranteza_rotunda();
i++;
}
}
return rezultat;
}
*/
int main()
{
fin >> n;
for(int i = 1; i <= n; i ++)
{
fin >> v[i];
}
maxim = INT_MIN;
st = 1;
dr = 1;
secventa_suma_maxima(v, n);
fout << maxim << ' ' << elem << ' ' << dr << '\n';
return 0;
}