Cod sursa(job #3243341)

Utilizator Manolea_Teodor_StefanManolea Teodor Stefan Manolea_Teodor_Stefan Data 17 septembrie 2024 17:20:33
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>
//#pragma GCC optimize("O3,unroll-loops")
//#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")

//#define fin cin
//#define fout cout

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

const int NMAX = (1e6) * 6;

int n;

int v[NMAX+1];

int main() {
    fin >> n;
    for (int i = 1; i <= n; i++) {
        fin >> v[i];
    }

    // starea initiala
    int s = v[1];
    int memI = 1, memJ = 1;

    int ans = v[1];
    int ansI = 1, ansJ = 1;
    for (int i = 2; i <= n; i++) {
        if (s + v[i] >= v[i]) {
            memJ++;
            s += v[i];
            if (s >= ans) {
                ansI = memI;
                ansJ = memJ;
                ans = s;
            }

        } else {
            s = v[i];
            memI = memJ = i;
        }
    }
    fout << ans << ' ' << ansI << ' ' << ansJ;
    return 0;
}