Pagini recente » Cod sursa (job #1260426) | Cod sursa (job #2684398) | Cod sursa (job #1607854) | Cod sursa (job #2317852) | Cod sursa (job #1197488)
#include <cstdio>
#include <deque>
#define LMAX 3500000
#define MAX 500100
using namespace std;
bool boolish[LMAX];
char sir[LMAX];
int v[MAX];
deque <int> dubla;
int main()
{
int n,k;
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%d%d\n",&n,&k);
fgets(sir,sizeof(sir),stdin);
int kon=1,semn=1,sol=MAX-2*MAX,poz;
char *p=sir;
while(kon<=n and *p!='\n'){
if(*p==' ')++p;
if(*p=='-')semn=-1,++p;
while(*p>='0' and *p<='9'){
v[kon]=v[kon]*10+(*p-'0');
boolish[kon]=1;
++p;
}
if(boolish[kon]){
v[kon]*=semn;
++kon;
semn=1;
++p;
continue;
}
++p;
}
for(int i=1;i<=n;++i){
while(!dubla.empty() and v[dubla.back()]>=v[i])
kon=dubla.back(),dubla.pop_back();
dubla.push_back(i);
if(i-dubla.front()==k)dubla.pop_front();
if(i>=k and v[dubla.front()]>sol){
poz=i;
sol=v[dubla.front()];
}
}
printf("%d %d %d\n",poz-k+1,poz,sol);
return 0;
}