Mai intai trebuie sa te autentifici.
Cod sursa(job #1765098)
Utilizator | Data | 26 septembrie 2016 12:21:51 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 85 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.82 kb |
#include <iostream>
#include <fstream>
#include <climits>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
const int NMAX=6000001;
int sum[NMAX],N,maxx=INT_MIN,minn=INT_MAX;
int main()
{
f>>N;
int i,x,p,u,ssm;
for(i=1; i<=N; i++)
{
f>>x;
sum[i]=sum[i-1]+x;
if(maxx<sum[i])
{
maxx=sum[i];
u=i;
}
if(minn>sum[i])
{
minn=sum[i];
p=i;
}
}
if(maxx<0)
{
for(i=1; i<=N; i++)
{
int dif=sum[i]-sum[i-1];
if(maxx<dif)
{
maxx=dif;
u=i;
p=i-1;
}
}
}
ssm=sum[u]-sum[p];
g<<ssm<<' '<<p+1<<' '<<u;
return 0;
}