Pagini recente » Cod sursa (job #1253329) | Cod sursa (job #677450) | Cod sursa (job #419075) | Statistici Chis Alexandru (Alex_Chis) | Cod sursa (job #3197789)
#include <fstream>
#include <vector>
#include <limits.h>
#define ll long long
using namespace std;
ifstream cin("ssm.in");
ofstream cout("ssm.out");
long long n,smax=LLONG_MIN;
int inc,sf;
vector<ll>V;
vector<pair<ll,int>>Sc;
int main()
{
cin>>n;
V.resize(n+1);
Sc.resize(n+1);
for(int i=1;i<=n;++i) cin>>V[i];
for(int i=1;i<=n;++i){
// Sc[i]=max(V[i],Sc[i-1]+V[i]);
// smax=max(smax,Sc[i]);
if(V[i]>Sc[i-1].first+V[i]){
Sc[i].first=V[i]; // o noua secventa
Sc[i].second=i;
if(Sc[i].first>smax)
smax=Sc[i].first;
}else{
Sc[i].first=Sc[i-1].first+V[i];//continua secventa anterioara
Sc[i].second=Sc[i-1].second;
if(Sc[i].first>smax){
sf=i;
inc=Sc[i].second;
smax=Sc[i].first;
}
}
}
// for(auto x:Sc) cout<<x<<" ";
cout<<smax<<" "<<inc<<" "<<sf;
return 0;
}