Pagini recente » Cod sursa (job #1544294) | Cod sursa (job #1623132) | Cod sursa (job #3140376) | Cod sursa (job #178727) | Cod sursa (job #1803414)
#include <iostream>
#include <cstdio>
#include <climits>
using namespace std;
int n,k;
int maxim=INT_MIN;
int a[5000001],sfarsit;
//class Deque
//{
//private:
int inc,sf;
long long int arr[5000001];
//public:
// Deque()
//{
// inc=sf=0;
//}
void adauga_sfarsit(int i)
{
arr[++sf]=i;
}
int prim()
{
return arr[inc];
}
int ultim()
{
return arr[sf-1];
}
void scoate_prim()
{
inc++;
}
void scoate_ultim()
{
sf--;
}
bool vida()
{
return sf-inc==0;
}
//}d;
void solve()
{
scanf("%d %d",&n,&k);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
adauga_sfarsit(1);
for(int i=2;i<k;i++)
{
while(sf-inc!=0 && a[ultim()]>a[i])
scoate_ultim();
adauga_sfarsit(i);
}
for(int i=k;i<=n;i++)
{
if(sf-inc!=0 && arr[inc]<=i-k)
inc++;
while(sf-inc!=0 && a[ultim()]>a[i])
scoate_ultim();
adauga_sfarsit(i);
if(a[arr[inc]]>maxim && i>=k-1)
{
maxim=a[arr[inc]];
sfarsit=i;
}
}
printf("%d %d %d\n",sfarsit-k+1,sfarsit,maxim);
}
int main()
{
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
solve();
return 0;
}