Pagini recente » Cod sursa (job #808999) | Cod sursa (job #1967113) | Borderou de evaluare (job #291245) | Cod sursa (job #1688810) | Cod sursa (job #1074601)
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int s[6000001];
int n,maxx = -999999999,L,l,k;///L=poz finala, l = poz initiala
int main()
{
int x;
fin>>n>>k;
fin>>x;
s[1] = x;
for(int i=2 ; i<=n ; i++)
{
fin>>x;
if(s[i-1] + x > x )
{
s[i] = s[i-1]+x;
if(s[i] > maxx)///daca am gasit un maxx in reinitializam, si cautam L(poz initiala)
{
maxx=s[i],L=i;
l = i-1;
while(s[l]>=0 && l>0) l--;
l+=1;
}
else if(s[i]==maxx)///daca mai gasim inca un max, poz initiala sa fie minima
{
int j=i-1;
while(s[j]>=0 && j>0) j--;
j+=1;
if(j<l)L=i,l=j;
}
}
else
{
s[i] = x;
if(s[i] > maxx)///daca am gasit un maxx in reinitializam, si cautam L(poz initiala)
{
maxx=s[i],L=i;
l = i-1;
while(s[l]>=0 && l>0) l--;
l+=1;
}
else if(s[i]==maxx)///daca mai gasim inca un max, poz initiala sa fie minima
{
int j=i-1;
while(s[j]>=0 && j>0) j--;
j+=1;
if(j<l)L=i,l=j;
}
}
}
fout<<maxx<<" "<<l<<" "<<L;
fin.close();
fout.close();
return 0;
}