Pagini recente » Cod sursa (job #857936) | Cod sursa (job #2650545) | Cod sursa (job #551925) | Cod sursa (job #2043766) | Cod sursa (job #1507572)
#include <fstream>
#include <iostream>
#include <climits>
using namespace std;
int n,k,i,dek[5000000],a[5000000],li,ls,baza=-INT_MAX;
char s[5000000];
int main()
{ ifstream in("secventa.in");
ofstream out("secventa.out");
in>>n>>k;
in.getline(s,5000000,EOF);
int semn,p=0;
for(i=0; s[i]; i++)
{semn=1;
if(s[i]=='-')
{semn=-1;
i++;
}
if(isdigit(s[i]))
{++p;
for(;isdigit(s[i]);i++)
a[p]=a[p]*10+s[i]-'0';
a[p]*=semn;
}
}
int prim=1,ultim=0;
for(i=1; i<=n; i++)
{while(a[i]<=a[dek[ultim]] && prim<=ultim)
ultim--;
ultim++;
dek[ultim]=i;
if(dek[prim]<=i-k)
prim++;
if(i>=k)
{if(a[dek[prim]]>baza)
{baza=a[dek[prim]];
li=i-k+1;
ls=i;}
else
if(dek[prim]==baza && prim<li)
{li=i-k+1;
ls=i;}}
}
out<<li<<' '<<ls<<' '<<baza;
return 0;
}