Cod sursa(job #3243346)

Utilizator Manolea_Teodor_StefanManolea Teodor Stefan Manolea_Teodor_Stefan Data 17 septembrie 2024 17:29:45
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.24 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");

int n;

int main() {
    fin >> n;

    // starea initiala

    long long rd;
    fin >> rd;

    int s = rd;
    int memI = 1, memJ = 1;

    int ans = rd;
    int ansI = 1, ansJ = 1;

    for (int i = 2; i <= n; i++) {
        fin >> rd;
        if (s + rd >= rd) {
            memJ++;
            s += rd;
            if (s > ans) {
                ansI = memI;
                ansJ = memJ;
                ans = s;
            } else if (s == ans) {
                if (memI < ansI) {
                    ansI = memI;
                    ansJ = memJ;
                    ans = s;
                } else if (memI == ansI and memJ < ansJ) {
                    ansI = memI;
                    ansJ = memJ;
                    ans = s;
                }

            }

        } else {
            s = rd;
            memI = memJ = i;
            if (s > ans) {
                ansI = memI;
                ansJ = memJ;
                ans = s;
            }
        }
    }
    fout << ans << ' ' << ansI << ' ' << ansJ;
    return 0;
}