Pagini recente » Cod sursa (job #2206667) | Cod sursa (job #150786)
Cod sursa(job #150786)
#include <stdio.h>
#include <string.h>
#include <fstream.h>
#define NM 501
#define INF 0x7fff
int a[NM],ind[NM],vf,baza;
void popvf()
{ vf--;
}
void popbaza()
{ baza++;
}
void push(int x,int k)
{ a[++vf]=x;
ind[vf]=k;
}
int main()
{ long n,k;
FILE *f=fopen("secventa.in","rt");
fscanf(f,"%ld %ld",&n,&k);
char c[NM*7];
fgets(c,NM*7,f);
fgets(c,NM*7,f);
long l=strlen(c),p=-1;
fclose(f);
int max=-INF,kmax=1;
int x,i,semn;
vf=0;baza=1;
for (i=1;i<k;i++)
{ x=0;semn=1;p++;
while (p<l&&c[p]!=' ')
{ if (c[p]=='-') semn=-1;
else x=x*10+c[p]-'0';
p++;
}
x=x*semn;
while (a[vf]>x&&vf>=baza) popvf();
push(x,i);
}
for (i=k;i<=n;i++)
{ x=0;semn=1;p++;
while (p<l&&c[p]!=' ')
{ if (c[p]=='-') semn=-1;
else x=x*10+c[p]-'0';
p++;
}
x=x*semn;
if (i-ind[baza]>=k) popbaza();
while (a[vf]>x&&vf>=baza) popvf();
push(x,i);
if (a[baza]>max)
{ max=a[baza];
kmax=i-k+1;
}
}
ofstream g("secventa.out");
g<<kmax<<' '<<kmax+k-1<<' '<<max;
g.close();
return 0;
}