Cod sursa(job #1946076)

Utilizator teodoranTeodora Nemtanu teodoran Data 29 martie 2017 21:25:48
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#define nmax 6000001
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int s[nmax];
int minim[nmax];
int n, start, finish, S;

void readData(){
    int i, x;
    fin>> n;
    for(i=1; i<=n; i++){
        fin>> x;
        s[i]=s[i-1]+x;
        }
    }

void getSSM(){
    int i;
    minim[1]=1;
    for(i=2; i<=n; i++)
        if(s[i]<s[minim[i-1]]) minim[i]=i;
        else minim[i]=minim[i-1];
    for(i=1; i<=n; i++)
        if(s[i]-s[minim[i]]> S){
            S=s[i]-s[minim[i]];
            start=minim[i]+1;
            finish=i;
            }
    }


int main(){
    int i;
    readData();
    getSSM();
//    for(i=1; i<=n; i++)
//        fout<< minim[i]<< " ";
    fout<<S << " "<< start<< " "<< finish;
    return 0;
    }