Pagini recente » Cod sursa (job #45291) | Cod sursa (job #550022) | Cod sursa (job #2126613) | Cod sursa (job #1605011) | Cod sursa (job #2909088)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
int n;
/*
* vec - vector of elements
* s[k] - the bigest sum vec[i] + vec[i+1]+ ...+ vec[k], i<=k
*
*/
int *vec,*sum,*firstIndex;
void read(){
in >> n ;
vec = new int[n];
sum = new int[n];
firstIndex = new int[n];
for(int i = 0 ; i < n ; i ++){
in>>vec[i];
}
}
int solve(){
int maxSum = 0;
int indexOfMaxSum = 0;
sum[0] = vec[0];
firstIndex[0] = 0;
for(int i = 1 ; i < n ; i ++){
int newSum = vec[i] + sum[i-1];
if(newSum > vec[i]){
sum[i] = newSum;
firstIndex[i] = firstIndex[i-1];
}else{
sum[i] = vec[i];
firstIndex[i] = i;
}
if(sum[i] > maxSum){
maxSum = sum[i];
indexOfMaxSum = i;
}
}
return indexOfMaxSum;
}
void output(int i){
out<<sum[i]<<" " <<firstIndex[i] + 1<<" " <<i +1;
delete[] vec;
delete[] firstIndex;
delete[] sum;
}
int main() {
read();
output(solve());
return 0;
}