Cod sursa(job #3309263)
| Utilizator | Data | 3 septembrie 2025 10:55:14 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.75 kb |
#include <iostream>
using namespace std;
const int n_max=6e6;
long long myinf=3e9;
long long v[n_max+1];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>v[i];
}
long long sum=0,min_sum=0;
long long ansewer=-myinf;
int j=1,st,dr;
for(int i=1;i<=n;i++){
sum=sum+v[i];
long long candidat=sum-min_sum;
if(candidat>ansewer)
{
ansewer=candidat;
st=i;
dr=j;
}
else if(candidat==ansewer && j<st)
{
st=j;
dr=i;
}
if(sum<min_sum)
{
j=i+1;
min_sum=sum;
}
}
cout<<ansewer<<" "<<st<<" "<<dr;
return 0;
}
