Pagini recente » Cod sursa (job #292465) | Cod sursa (job #2869327) | Cod sursa (job #12313) | Cod sursa (job #697742) | Cod sursa (job #3268919)
// https://infoarena.ro/problema/ssm
#include <iostream>
#include <fstream>
#include <vector>
#include <climits>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
void mss(int *p, int n, int &start, int &end, int &maxsum) {
int currentSum = 0,
possibleStart = 0;
maxsum = p[ 0 ];
start = 0;
end = -1;
for(int i = 0; i < n; ++i) {
if(currentSum < 0) possibleStart = i;
currentSum = max(currentSum + p[i], p[ i ]);
if(currentSum > maxsum) {
maxsum = currentSum;
start = possibleStart;
end = i;
}
}
}
int main(int argc, char const *argv[])
{
int *v,
i,
n,
start,
end,
maxsum;
cin>>n;
v = new int[ n + 1 ];
for(int i = 0; i < n; ++i) fin>>v[i];//based-0 index
//variabile transmise prin referinta: start, end, maxsum
mss(v, n, start, end, maxsum);
fout<<maxsum<<" "<<start + 1<<" "<<end + 1;
}