Pagini recente » Cod sursa (job #1696887) | Cod sursa (job #603553) | Cod sursa (job #127772) | Cod sursa (job #3191279) | Cod sursa (job #382669)
Cod sursa(job #382669)
#include <stdio.h>
FILE *f=fopen("secv2.in", "r"), *g=fopen("secv2.out", "w");
long v[50005], s[50005], k, n, i, j, h, pozmax, lmax, sw, t, l, max;
void citeste(void)
{
fscanf(f, "%d%d", &n, &k);
for (i=1;i<=n;i++)
fscanf(f, "%d", &v[i]);
fclose(f);
}
void rezolva(void)
{
s[1]=v[1];
for (i=2;i<=n;i++)
if (s[i-1]<0)
s[i]=v[i];
else
s[i]=s[i-1]+v[i];
}
void tip(void)
{
fprintf(g, "%ld %ld %ld", pozmax-lmax+1, pozmax, lmax);
fclose(g);
}
void gaseste(void)
{
for (i=n;i>=1;i++)
{
max=-589647;
for (j=1;j<=n;i++)
if (s[j]>max)
{
sw=0;
max=s[j];
pozmax=j;
}
else
if (s[j]==max)
sw=1;
t=max;
l=0;
for (j=pozmax;t;j--)
{
t-=v[j];
l++;
}
if (l>=k)
if (!sw)
{
tip();
break;
}
else
{
s[pozmax]=-589647;
lmax=l;
for (j=1;j<=n;j++)
if (s[j]==max)
{
l=0;
t=max;
for (h=j;t;h--)
{
t-=v[h];
l++;
}
if (l>lmax)
{
lmax=l;
pozmax=j;
}
}
}
}
int main(void)
{
citeste();
rezolva();
gaseste();
return 0;
}