Cod sursa(job #3142291)

Utilizator radu1331Mocan Radu radu1331 Data 20 iulie 2023 14:15:04
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
const int INF = 1e9;
const int NMAX = 6'000'001;
int dp [ NMAX ];
int start [ NMAX ];
int main()
{
    (void)! freopen ( "ssm.in" , "r" , stdin );
    (void)! freopen ( "ssm.out" , "w" , stdout );
    int n, a, ans = -INF, startAns, endAns; cin >> n;
    for ( int i = 1 ; i <= n ; ++ i )
    {
        cin >> a;
        if ( dp [ i - 1 ] >= 0 )
        {
            start [ i ] = start [ i - 1 ];
            dp [ i ] = dp [ i - 1 ] + a;
        }
        else
        {
            start [ i ] = i;
            dp [ i ] = a;
        }
        if ( ans < dp [ i ] )
        {
            ans = dp [ i ];
            startAns = start [ i ];
            endAns = i;
        }
        //cout << start [ i ] << ' ' << dp [ i ] << ' ' << dp [ i - 1 ] << ' ' << start [ i - 1 ] << '\n';
    }
    cout << ans << ' ' << startAns << ' ' << endAns << '\n';
    return 0;
}