Pagini recente » Cod sursa (job #2761461) | Cod sursa (job #1341762) | Borderou de evaluare (job #156732) | Cod sursa (job #2588260) | Cod sursa (job #648023)
Cod sursa(job #648023)
#include <fstream>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int N , K , bk ,fr , pos , posf;
short A[500001] , dq[500001] ,bmax = -30005;
int main()
{
fin>>N>>K;
fr = 1; bk = 0;
for(int i = 1;i<=N;++i)
{
fin>>A[i];
while(fr<=bk && A[i] <= A[dq[bk]]) bk--;
dq[++bk] = i;
if(dq[fr] == i - K) fr++;
if(i>=K)
{
if(bmax < A[dq[fr]])
bmax = A[dq[fr]] , pos = dq[fr];
}
}
posf = pos + K - 1;
while(posf<N && A[posf]>=bmax) posf++;
if(A[posf] < bmax) posf--;
fout<<pos<<" "<<posf<<" "<<bmax<<'\n';
return 0;
}