Pagini recente » Cod sursa (job #3149411) | Cod sursa (job #608206) | Cod sursa (job #413013) | Borderou de evaluare (job #1519063) | Cod sursa (job #3127180)
#include <bits/stdc++.h>
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
long long n, A[500005], k, P1, P2;
deque< pair<long long, long long> > D;
int main()
{
f >> n >> k;
for(long long i = 1; i <= n; i ++)
f >> A[i];
D.push_back({A[1], 1});
for(long long i = 2; i <= k; i ++)
{
while(!D.empty() && A[i] < D.back().first)
D.pop_back();
D.push_back({A[i], i});
}
long long maxi = D.front().first;
long long pozi = 2, pozf = k + 1;
P1 = 1; P2 = 3;
while(pozi <= n - k + 1)
{
while(!D.empty() && D.front().second < pozi)D.pop_front();
while(!D.empty() && D.back().first > A[pozf])D.pop_back();
D.push_back({A[pozf], pozf});
if(maxi < D.front().first)
{
maxi = D.front().first;
P1 = pozi; P2 = pozf;
}
pozi ++; pozf ++;
}
g << P1 << " " << P2 << " " << maxi;
return 0;
}