Cod sursa(job #1896048)

Utilizator ChiriGeorgeChiriluta George-Stefan ChiriGeorge Data 28 februarie 2017 13:29:17
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream fin("ssm.in");
ofstream fout("ssm.out");

vector <int> best;
int n, i, l, r, x, s = -0x3f3f3f3f, max_pos, start_pos;

int main()
{
    fin >> n;
    for(i = 1; i <= n; i++)
    {
        fin >> x;
        if(!best.empty() && x <= best.back() + x)
        {
            best.push_back(best.back() + x);
            ++r;
        }
        else
        {
            best.clear();
            best.push_back(x);
            l = i;
            r = l;
        }
        if(s < best.back()){
                s = best.back();
                max_pos = r;
                start_pos = l;
        }
        if(s == best.back() && r - l < max_pos - start_pos)
        {
            s = best.back();
            max_pos = r;
            start_pos = l;
        }
    }
    fout << s << ' ' << start_pos << ' ' << max_pos << '\n';
    return 0;
}