Cod sursa(job #1895280)
| Utilizator | Data | 27 februarie 2017 21:16:31 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 5 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.83 kb |
#include <fstream>
using namespace std;
int v1[6000010],v2[6000010],a,b,a2;
int main()
{
ifstream fin ("ssm.in");
ofstream fout ("ssm.out");
int n,mare=-230023781,vf=1;
fin>>n;
for (int i=1;i<=n;++i)
{
fin>>v1[i];
v2[i]=v2[i-1];
vf=1;
v2[i]+=v1[i];
if (mare<v2[i] && vf)
{
b=i;
mare=v2[i];
//cout<<v2[i]<<"\n";
a2=a;
}
if (v2[i]<0)
{
a=i+1;
v2[i]=0;
vf=0;
}
else
{
v2[i]+=v1[i];
}
if (mare<v2[i] && vf)
{
b=i;
mare=v2[i];
//cout<<v2[i]<<"\n";
a2=a;
}
}
fout<<mare;
fout<<" "<<a2<<" "<<b;
}
