Pagini recente » Cod sursa (job #2082060) | Cod sursa (job #589186) | Cod sursa (job #1213996) | Istoria paginii runda/winners2 | Cod sursa (job #150777)
Cod sursa(job #150777)
#include <stdio.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);
int max=-INF,kmax=1;
int x,i,sw;
char c;
fscanf(f,"%c",&c);
fflush(f);
vf=0;baza=1;
for (i=1;i<k;i++)
{ x=0;sw=1;
fscanf(f,"%c",&c);
while ((c<='9'&&c>='0'||c=='-')&&!feof(f))
{ if (c=='-') sw=-1;
else x=x*10+c-'0';
fscanf(f,"%c",&c);
}
x=x*sw;
while (a[vf]>x&&vf>=baza) popvf();
push(x,i);
}
for (i=k;i<=n;i++)
{ x=0;sw=1;
fscanf(f,"%c",&c);
while ((c<='9'&&c>='0'||c=='-')&&!feof(f))
{ if (c=='-') sw=-1;
else x=x*10+c-'0';
fscanf(f,"%c",&c);
}
x=x*sw;
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;
}
}
fclose(f);
ofstream g("secventa.out");
g<<kmax<<' '<<kmax+k-1<<' '<<max;
g.close();
return 0;
}