Cod sursa(job #1331360)
Utilizator | Data | 31 ianuarie 2015 16:07:27 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 85 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.57 kb |
#include <iostream>
#include <fstream>
#define Nmax 6000000
using namespace std;
int s[Nmax],i,n,smax,smin,nr,a,b;
ifstream f ("ssm.in");
ofstream g ("ssm.out");
int main()
{
f>>n;
s[0]=0; a=32000; b=-32000; smin=smax=0;
for (i=1;i<=n;i++)
{
f>>nr; s[i]=s[i-1]+nr;
if (s[i]<a ) {smin=i+1; a=s[i];}
if (s[i]<0 && b<nr) {smin=smax=i; b=nr;}
else
if ((s[i]-s[smin-1])>b )
{smax=i; b=s[i]-s[smin-1];}
}
g<<b<<" "<<smin<<" "<<smax;
f.close();
g.close();
return 0;
}