Pagini recente » Cod sursa (job #2620104) | Cod sursa (job #2051462) | Cod sursa (job #3171297) | Cod sursa (job #488333)
Cod sursa(job #488333)
/*#include <cstdio>
FILE * fin = fopen("ssm.in","r");
FILE * fout = fopen("ssm.out","w");
int main()
{
int n;
fscanf(fin,"%d",&n);
int best = 0;
int pi=0;
int max=-0x3f3f3f3f,pim,pfm;
for (int i=0; i<n; i++)
{
int x;
fscanf(fin,"%d",&x);
if (best+x<x)
{
best=x;
pi=i;
} else
best+=x;
if (best>max)
{
max=best;
pim=pi;
pfm=i;
}
}
fprintf(fout,"%d %d %d\n",max,pim+1,pfm+1);
fclose(fin);
fclose(fout);
return 0;
}
*/
#include <cstdio>
#include <cstdlib>
#include <limits.h>
FILE *fin=fopen("ssm.in","r");
FILE *fout=fopen("ssm.out","w");
inline bool isgood(char c)
{
return ((c<='9')&&(c>='0')||(c=='-'));
}
int main (int argc, char * const argv[]) {
int n;
fscanf(fin, "%d",&n);
int smin=0;
int psmin=-1;
int spart=0;
int max=INT_MIN;
int pi=-1;
int pf=-1;
for (int i=0; i<n; i++)
{
int v=0;
int sgn=1;
char c;
while (!isgood(c=fgetc(fin)));
if (c=='-')
{
sgn=-1;
c=fgetc(fin);
}
do {
v=v*10+c-'0';
c=fgetc(fin);
}while (isgood(c));
v*=sgn;
spart+=v;
if (spart-smin>max)
{
max=spart-smin;
pi=psmin;
pf=i;
}
if (spart<smin)
{
psmin=i;
smin=spart;
}
}
fprintf(fout, "%d %d %d\n",max,pi+2,pf+1);
fclose(fin);
fclose(fout);
return 0;
}