Pagini recente » Cod sursa (job #3267642) | Cod sursa (job #3294254) | Cod sursa (job #3282621) | Cod sursa (job #273610) | Cod sursa (job #267409)
Cod sursa(job #267409)
#include <stdio.h>
#define DIM 6000002
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\n",max);
for (i=begin;i<=end;i++)
fprintf(g,"%d ",v[i]);
fclose(f);
fclose(g);
return 0;
}