Cod sursa(job #2053132)
| Utilizator | Data | 31 octombrie 2017 15:40:58 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.56 kb |
#include <fstream>
using namespace std;
ifstream f("ssm.in"); ofstream g("ssm.out");
int main()
{ int n;
f>>n;
int c=0,p,maxneg=-2000000000,S=0,st=1,dr,Sm,stm,drm;
for(dr=1;dr<=n;dr++)
{ int v;
f>>v;
if(v>=0) c++;
if(v<0 && v>maxneg) {maxneg=v; p=dr;}
S+=v;
if(S<0) {st=dr+1; S=0;}
else
{
if(S>Sm){Sm=S; stm=st; drm=dr;} ///Criteriul maximalitatii.
}
}
if(c==0) g<<maxneg<<" "<<p<<" "<<p; else g<<Sm<<" "<<stm<<" "<<drm;
g.close(); return 0;
}