Pagini recente » Cod sursa (job #231228) | Cod sursa (job #2242288) | Cod sursa (job #2219657) | Cod sursa (job #1354268) | Cod sursa (job #648039)
Cod sursa(job #648039)
#include <fstream>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int N , K , bk ,fr , pos;
int A[500001] , dq[500001] ,bmax;
int main()
{
fin>>N>>K;
fr = 1; bk = 0;
for(int i = 1;i<=N;++i)
fin>>A[i];
for(int i = 1;i<=K;++i)
{
while(fr<=bk && A[i] <= A[dq[bk]] ) bk--;
dq[++bk] = i;
}
bmax = A[dq[fr]];
pos = 1;
if(dq[fr] == 1) fr++;
for(int i = K + 1;i<=N;++i)
{
while(fr<=bk && A[i] <= A[dq[bk]] ) bk--;
dq[++bk] = i;
if(dq[fr] == i-K) fr++;
if(A[dq[fr]] > bmax) bmax = A[dq[fr]] , pos = i - K + 1 ;
//fout<<pos<<" ";
}
fout<<pos<<" "<<pos + K - 1 <<" "<<bmax;
return 0;
}