Pagini recente » Cod sursa (job #1648722) | Cod sursa (job #1877593) | Cod sursa (job #1554293) | Cod sursa (job #362321) | Cod sursa (job #185942)
Cod sursa(job #185942)
#include <cstdio>
#include <fstream.h>
#include <string>
#define maxn 500001
#define DIM 8192
int a[maxn];
int dq[maxn][2];
int first, last;
int n, K;
int poz;
char ax[DIM];
inline void cit(int &x)
{
x=0;
while((ax[poz]<'0' || ax[poz]>'9') && ax[poz]!='-')
if(++poz==DIM) fread(ax, 1, DIM, stdin), poz=0;
int neg=0;
if(ax[poz]=='-') neg=1, ++poz;
while(ax[poz]>='0' && ax[poz]<='9')
{
x=x*10+ax[poz]-'0';
if(++poz==DIM) fread(ax, 1, DIM, stdin), poz=0;
}
if(neg) x=-x;
}
void read()
{
freopen("secventa.in","r",stdin);
// ifstream f("secventa.in");
cit(n); cit(K);
// f>>n>>K;
for(int i=1;i<=n;++i)cit((int&)a[i]);//f>>a[i];
}
inline void insert(int v, int poz)
{
while(first<=last && dq[last][0]>v) --last;
++last;
dq[last][0]=v;
dq[last][1]=poz;
}
inline short query(int a, int b)
{
while(first<=last && dq[first][1]<a) ++first;
return dq[first][0];
}
void solve()
{
int i, p, q, sol=-0x3f3f3f3f;
for(i=1;i<K;++i) insert(a[i], i);
for(i=K;i<=n;++i)
{
insert(a[i], i);
int t=query(i-K+1, i);
if(t>sol)
{
sol=t;
p=i-K+1;
q=i;
}
}
ofstream g("secventa.out");
g<<p<<" "<<q<<" "<<sol<<"\n";
}
int main()
{
read();
solve();
return 0;
}