Cod sursa(job #1680685)

Utilizator monicalegendaLegenda Monica monicalegenda Data 8 aprilie 2016 22:58:31
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <stdio.h>
#include <vector>
#include <iostream>

using namespace std;

int main() {

    int N = 0;
    vector<int> v;

    FILE * fin = fopen("ssm.in", "r");
    FILE * fout = fopen("ssm.out", "w");

    fscanf(fin, "%d", &N);
    v.resize(N);

    for (int i = 0; i < N; i++){
        fscanf( fin, "%d\n", &v[i] );
    }

    if(v.size() == 1){
        fprintf(fout, "%d 1 1\n", v[0]);
        return 0;
    }


    int best0 = 0, indi = 0, inds = 0, cindi, cinds;
    unsigned int i;
    int max = v[0];
    int best_1 = v[0];
    for(i = 1; i < v.size(); i++){
        if(best_1 >= 0){
            best0 = best_1 + v[i];
            if(v[i] > 0){
                cinds = i;
            }
        }else{
            best0 = v[i];
            cindi = i; cinds = i;
        }

        if(best0 > max){
            max = best0;
            indi = cindi;
            inds = cinds;
        }

        best_1 = best0;
    }
    fprintf(fout, "%d %d %d\n", max, indi+1, inds+1);


    fclose(fin);
    fclose(fout);

    return 0;
}