Cod sursa(job #3149889)
| Utilizator | Data | 13 septembrie 2023 12:58:34 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.5 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
int v[1000];
int main()
{
//two pointers
int n;
in >> n;
for(int i=0;i<n;i++){
in >> v[i];
}
int r1, r2;
int st = 0;
int s = 0;
int mx = 0;
for(int dr = 0; dr < n; dr++){
s+=v[dr];
while(s<0 && st<dr){
s-=v[st];
st++;
}
if(mx<s){
r1 = dr;
r2 = st;
}
mx = max(mx, s);
}
out << mx << " " << r1+1 << " " << r2+1;
}
