Cod sursa(job #2516988)

Utilizator leru007Leru Ursu leru007 Data 2 ianuarie 2020 18:17:34
Problema Subsecventa de suma maxima Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <bits/stdc++.h>
#define ll long long
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define pb push_back
#define f first
#define sc second
using namespace std;
ll mod=1e9+7,i,j;
ll a[6000005];
ll n;
ll sum[6000005];
int main(){
    ifstream fin("ssm.in");
    ofstream fout("ssm.out");
    fin>>n;
    for(i=1;i<=n;i++) fin>>a[i];
    sum[0]=0;
    for(i=1;i<=n;i++) sum[i]=a[i]+sum[i-1];
    ll ans_lungime=1e9,ans_poz,minval=sum[1];
    ans_lungime=-ans_lungime;
    for(i=1;i<=n;i++){
        minval=min(sum[i],minval);
        if(ans_lungime<sum[i]-minval){
            ans_lungime=sum[i]-minval;
            ans_poz=i;
        }
    }
    ll ans=0;
    ll poz;
    for(i=ans_poz;i>=1;i--){
        ans+=a[i];
        poz=i;
        if(ans==ans_lungime) break;
    }
    fout<<ans<<" "<<poz<<" "<<ans_poz;
    return 0;
}