Pagini recente » Cod sursa (job #363883) | Rating pcman ion (pc2013) | Cod sursa (job #2395844) | Cod sursa (job #2851774) | Cod sursa (job #1427104)
#include <stdio.h>
#include <stdlib.h>
#define INF 50000
void valoareSumaMaxima(int* vector, int size) {
int maxim1, maxim2, i, start, end, maxim = -INF, poz;
maxim1 = 0;
maxim2 = 0;
start = -1;
end = -1;
for(i = 0; i < size; i++) {
if(vector[i] > maxim) {
maxim = vector[i];
poz = i;
}
if(start == -1) {
start = i;
}
maxim2 += vector[i];
if(maxim2 < 0) {
maxim2 = 0;
start = -1;
} else if(maxim1 < maxim2) {
maxim1 = maxim2;
end = i;
}
}
if(end == -1) {
printf("%d %d %d\n", maxim, poz+1, poz+1);
} else {
printf("%d %d %d\n", maxim1, start+1, end+1);
}
}
int main() {
freopen("ssm.in", "r", stdin);
freopen("ssm.out", "w", stdout);
int nr, *vector, i;
scanf("%d", &nr);
vector = (int*) malloc(nr*sizeof(int));
for(i = 0; i < nr; i++) {
scanf("%d", &vector[i]);
}
valoareSumaMaxima(vector, nr);
return 0;
}