Pagini recente » Cod sursa (job #519927) | Cod sursa (job #3041302) | Cod sursa (job #3174592) | Cod sursa (job #60744) | Cod sursa (job #267412)
Cod sursa(job #267412)
#include <stdio.h>
#define DIM 602
int v[DIM],S[DIM];
int n,i,max,begin,end;
// S[i] = vectorul de sume partiale
// complexitatea O(n)
int main(){
FILE *f = fopen("ssm.in", "r");
FILE *g = fopen("ssm.out", "w");
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
S[1]=v[1];
begin=1;
end=1;
max=v[1];
for (i=2;i<=n;i++) {
if (S[i-1]+v[i] > v[i]) {
S[i]=S[i-1]+v[i];
if (S[i] > max) {
max=S[i];
end=i;
}
if (S[i]==max) {
if (i-begin+1 < end-begin+1)
end=i;
}
}
else {
S[i]=v[i];
if (S[i] > max) {
max=S[i];
begin=i;
end=i;
}
if (S[i]==max) {
if (i-begin+1 < end-begin+1)
end=i;
}
}
}
fprintf(g,"%d %d %d\n",max,begin,end);
fclose(f);
fclose(g);
return 0;
}