Pagini recente » Cod sursa (job #2828347) | Cod sursa (job #1123098) | Cod sursa (job #275941) | Cod sursa (job #12355) | Cod sursa (job #1595615)
#include <fstream>
#include <deque>
#define mp make_pair
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int n,k,a[500005],i1,i2,MAX;
deque < pair <int, int> > Q;
void Read()
{
fin>>n>>k;
for(int i = 1; i <= n; i++)
fin>>a[i];
}
void Solve()
{
int i,j,x;
for(i = 1; i <= k; i++)
{
x = a[i];
while(!Q.empty() && Q.back().first >= x)
Q.pop_back();
Q.push_back(mp(x,i));
}
MAX = Q.front().first;
i1 = 1, i2 = k;
for(i = k+1; i <= n; i++)
{
x = a[i];
while(!Q.empty() && Q.front().second <= i-k)
Q.pop_front();
while(!Q.empty() && Q.back().first >= x)
Q.pop_back();
Q.push_back(mp(x,i));
x = Q.front().first;
if(x > MAX)
{
MAX = x;
i2 = i;
i1 = i-k+1;
}
}
fout<<i1<<" "<<i2<<" "<<MAX<<"\n";
}
int main()
{
Read();
Solve();
fout.close();
return 0;
}