Pagini recente » Cod sursa (job #1233876) | Cod sursa (job #266590) | Cod sursa (job #155355) | Cod sursa (job #2956237) | Cod sursa (job #820596)
Cod sursa(job #820596)
#include<fstream>
#define Nmax 6000005
using namespace std;
ifstream f("ssm.in"); ofstream g("ssm.out");
long long INFINIT;
int N,k,p,o,minim,bestSum,a,sum[Nmax],best[Nmax];
int main()
{ INFINIT=1000000000; INFINIT=-INFINIT*INFINIT;
f>>N;
for (int i = 1; i <= N; i++) f>>a,sum[i] = a + sum[i-1];
minim = sum[0]; k=1;
bestSum = -INFINIT;
for (int i = 1; i <= N; i++)
{
best[i] = sum[i] - minim;
if (minim > sum[i]) {minim = sum[i]; k=i+1;}
if (bestSum < best[i]) {bestSum = best[i]; p=k; o=i;}
}
g<<bestSum<<' '<<p<<' '<<o<<'\n';
return 0;
}
/*
#include <stdio.h>
#include <stdlib.h>
using namespace std;
FILE *f=fopen("ssm.in","r");
FILE *g=fopen("ssm.out","w");
int s[6000300],best[6000300],max,o,p,n,i,min,x,k;
int main()
{
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
{fscanf(f,"%d",&x);
s[i]=s[i-1]+x;
}
min=9999999;
max=-99999999;
for (i=1;i<=n;i++)
{
best[i]=s[i]-min;
if (min>s[i]){min=s[i];k=i+1;}
if (max<best[i]) {max=best[i];p=k;o=i;}
}
if (p>o)p=o;
fprintf(g,"%d %d %d",max,p,o);
fclose(g);
return 0;
}
sum[0] = 0;
for (i = 1; i <= N; i++) sum[i] = a[i] + sum[i-1];
min = sum[0];
bestSum = -INFINIT;
for (i = 1; i <= N; i++) {
best[i] = sum[i] - min;
if (min > sum[i]) min = sum[i];
if (bestSum < best[i]) bestSum = best[i];
}
*/