Pagini recente » Rating Andrei Ivascu (AndreiasM) | Cod sursa (job #998338) | Cod sursa (job #1475747) | Cod sursa (job #685252) | Cod sursa (job #478757)
Cod sursa(job #478757)
#include <stdio.h>
#include <stdlib.h>
int ssm(int *v, int n, int *start, int *stop)
{
int i, s = v[0], max = v[0], ok = 0, aux;
*start = 0, *stop = 0;
for (i = 1; i < n; i++)
{
aux = max + v[i];
if (aux > v[i])
max = aux;
else
{
max = v[i];
ok = i;
while (v[ok - 1] == 0) ok--;
}
if (max > s)
{
s = max;
*stop = i;
*start = ok;
}
}
return s;
}
int main()
{
int n, *v, i, r, start, stop;
FILE *f, *g;
f = fopen("ssm.in", "r");
g = fopen("ssm.out", "w");
fscanf(f, "%d", &n);
v = (int *)malloc(sizeof(int) * n);
for (i = 0; i < n; i++)
fscanf(f, "%d", &v[i]);
r = ssm(v, n, &start, &stop);
fprintf(g, "%d %d %d\n", r, start + 1, stop + 1);
fclose(f);
fclose(g);
return 0;
}