Pagini recente » Cod sursa (job #2982284) | Cod sursa (job #1058753) | Cod sursa (job #1990248) | Cod sursa (job #102022) | Cod sursa (job #1013574)
#include <stdio.h>
#include <queue>
#define N 500000
#define fr(i,a,b) for(int i=a;i<b;++i)
using namespace std;
deque<int>q;
char s[N*10];
int a[N];
int l(int i){
if(i<0) i=-i;
if(i<10) return 1;
if(i<100) return 2;
if(i<1000) return 3;
if(i<10000) return 4;
return 5;
}
int l1(int i){
if(i==0) return 1;
int s=0;
if(i<0) s=1,i=-i;
while(i) ++s,i/=10;
return s;
}
int main(){
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
int n,k;
int mv,ml,mr;
mv=-33333;
scanf("%i%i\n",&n,&k);
gets(s);
int p=0;bool neg;
fr(i,0,n){
neg=false;
if(s[p]=='-') neg=true,++p;
while(s[p]!=' '&&s[p]!='\0')a[i]=a[i]*10+(s[p]-'0'),++p;++p;
if(neg)a[i]=-a[i];
}
int j;
fr(i,0,n){
while(!q.empty()&&q.front()>a[i]) q.pop_front();
q.push_front(a[i]);
if(i>=k-1){
int m=q.back();
if(m==a[i-k+1]) q.pop_back();
if(m>mv){mv=m;mr=i;ml=i-k+1;}
}
}
while(ml&&a[ml-1]>mv) --ml;
printf("%i %i %i",ml+1,mr+1,mv);
return 0;
}