Pagini recente » Cod sursa (job #1369263) | Cod sursa (job #2782364) | Cod sursa (job #1581796) | Cod sursa (job #2578664) | Cod sursa (job #645866)
Cod sursa(job #645866)
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
struct sumInfo{
int start;
int length;
int value;
sumInfo(){
start = -1;
length = 0;
}
};
void setSumInfo( struct sumInfo &elem, int start, int length, int value ){
elem.start = start;
elem.length = length;
elem.value = value;
}
void ssm( int a[], int n ){
sumInfo dp[n];
int max;
int i;
setSumInfo( dp[0], 0, 1, a[0] );
for( i=1; i<n; ++i ){
if( dp[i-1].value+a[i] > a[i] ){
setSumInfo( dp[i], dp[i-1].start, dp[i-1].length+1, dp[i-1].value+a[i] );
} else {
setSumInfo( dp[i], i, 1, a[i] );
}
}
max = 0;
for( i=1; i<n; ++i ){
if( dp[i].value > dp[max].value ){
max = i;
}
}
printf( "%d %d %d", dp[max].value, dp[max].start+1, max+1 );
}
int main(){
freopen( "ssm.in", "r", stdin );
freopen( "ssm.out", "w", stdout );
int n;
scanf( "%d", &n );
int a[n];
for( int i=0; i<n; ++i ){
scanf( "%d", &a[i] );
}
ssm( a, n );
return 0;
}