Mai intai trebuie sa te autentifici.
Cod sursa(job #689002)
| Utilizator | Data | 24 februarie 2012 00:57:39 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 95 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.68 kb |
#include<stdio.h>
#include<limits.h>
#define NMAX 6000005
int N,v[NMAX],start[NMAX];
void deschidere()
{
freopen("ssm.in","r",stdin);
freopen("ssm.out","w",stdout);
}
void citire()
{
scanf("%d",&N);
for(int i=0;i<N;i++)
scanf("%d",&v[i]);
}
void dinamica()
{
int i=0;
start[i]=i;
for(i=1;i<N;i++)
if(v[i-1]+v[i] > v[i])
v[i]=v[i-1]+v[i],start[i]=start[i-1];
else
v[i]=v[i],start[i]=i;
}
void rezolvare()
{
int max=INT_MIN,inceput,sfarsit;
for(int i=0;i<N;i++)
if(v[i]>max)
max=v[i],inceput=start[i],sfarsit=i;
printf("%d %d %d",max,inceput+1,sfarsit+1);
}
int main()
{
deschidere();
citire();
dinamica();
rezolvare();
return 0;
}