Pagini recente » Cod sursa (job #3270977) | Cod sursa (job #2940264) | Cod sursa (job #1866760) | Cod sursa (job #2846855) | Cod sursa (job #382765)
Cod sursa(job #382765)
#include <stdio.h>
#include <string.h>
#define MARE -2000000001
FILE *f=fopen("secv2.in", "r"), *g=fopen("secv2.out", "w");
long v[50005], s[50005], poz[50005], k, n, i, j, h, pozmax, lmax, sw, t, l, max;
void citeste(void)
{
fscanf(f, "%ld%ld", &n, &k);
for (i=1;i<=n;i++)
fscanf(f, "%ld", &v[i]);
fclose(f);
}
void rezolva(void)
{
memset(s, MARE, sizeof(s));
max = MARE;
s[1]=v[1];
poz[1]=1;
for (i=2;i<=n;i++)
if (s[i-1]<=0)
{
s[i]=v[i];
poz[i]=1;
if (s[i]>=max && poz[i]>(t-l+1))
{
max = s[i];
t = i;
l = i - poz[i]+1;
}
}
else
{
s[i]=s[i-1]+v[i];
poz[i]=poz[i-1]+1;
if (s[i]>max && poz[i]>(t-l+1))
{
max = s[i];
t = i;
l = i - poz[i]+1;
}
}
}
void tip(void)
{
if (!sw)
fprintf(g, "%ld %ld %ld", l, t, max);
else
fprintf(g, "%ld %ld %ld", l, t, -max);
fclose(g);
}
int main(void)
{
citeste();
rezolva();
sw=0;
if (max==MARE)
{
for (i=1;i<=n;i++)
v[i]=-v[i];
sw=1;
rezolva();
}
tip();
return 0;
}