Pagini recente » Cod sursa (job #1499920) | Cod sursa (job #1479520) | Cod sursa (job #2300150) | Cod sursa (job #1560391) | Cod sursa (job #2276018)
#include<stdio.h>
#include<iostream>
#include<fstream>
using namespace std;
int S;
int i1,i2;
int maxS, maxBegin, maxEnd;
void sumamaxima(int* a,int n){
maxS=a[0], maxBegin=0, maxEnd=0;
int prevS=a[0], prevBegin=0;
int crtS;
for(int i=1;i<n;i++){
if(prevS<0){
crtS=a[i];
if(crtS>maxS){
maxS=crtS; maxBegin=i; maxEnd=i;
}
prevBegin=i;
}
else{
if(prevS>0){
crtS=prevS+a[i];
if(crtS>maxS){
maxS=crtS; maxBegin=prevBegin; maxEnd=i;
}
else{
if(crtS==maxS){
if(prevBegin<maxBegin){
maxBegin=prevBegin; maxEnd=i;
}
}
}
}
}
prevS=crtS;
}
}
int main(){
int N;
ifstream input("ssm.in");
ofstream output("ssm.out");
input >> N;
int* v=new int[N];
for(int i=0;i<N;i++){
input >> v[i];
}
sumamaxima(v,N);
output << maxS << " ";
output << maxBegin+1 << " ";
output << maxEnd+1;
input.close();
output.close();
return 0;
}