Pagini recente » Cod sursa (job #2614323) | Cod sursa (job #664834) | Cod sursa (job #2204215) | Cod sursa (job #803185) | Cod sursa (job #1642599)
#include <iostream>
#include <cstdio>
#include <vector>
#include <stack>
#include <deque>
using namespace std;
int n,k;
struct elem
{
int val, poz;
};
deque<elem> dq;
int main()
{
elem nr;
int ok;
int i,j,mini=60000,strt=1,stp=k,strt1;
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%d%d",&n,&k); stp=k;
for(i=1;i<=k;i++)
{
scanf("%d",&nr.val); nr.poz=i; dq.push_back(nr); if(nr.val<mini) mini=nr.val;
}
for(i=k+1;i<=n;i++)
{
scanf("%d",&nr.val); nr.poz=i; ok=1;
if(dq.size())
while(ok==1)
{
if(dq.back().val>nr.val) { strt1=dq.back().poz; dq.pop_back(); }
else if(i-dq.back().poz>=k) dq.pop_back();
else ok=0;
if(!dq.size()) ok=0;
}
dq.push_back(nr);
if(dq.size()==1) { strt=strt1; stp=i; mini=nr.val;}
if(i-dq.front().poz>=k)
{
dq.pop_front();
if(dq.front().val>mini) { strt=dq.front().poz; stp=i; mini=dq.front().val; }
}
}
printf("%d %d %d\n",strt,stp,mini);
fclose(stdin);
fclose(stdout);
return 0;
}