Pagini recente » Cod sursa (job #2700179) | Borderou de evaluare (job #1855729) | Cod sursa (job #2931974)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int n,k;
int v[500005];
deque <int> q;
int maxim=-100000;
int st;
int dr;
int main()
{
fin>>n>>k;
for(int i=1; i<=n; i++)
{
fin>>v[i];
}
for(int i=1; i<=k; i++)
{
while(q.empty()==false && v[i]<=v[q.back()])
{
q.pop_back();
}
q.push_back(i);
}
for(int i=k+1; i<=n; i++)
{
while(q.empty()==false && i-q.front()>=k)
{
q.pop_front();
}
while(q.empty()==false && v[i]<=v[q.back()])
{
q.pop_back();
}
q.push_back(i);
if(v[q.front()]>maxim)
{
maxim=v[q.front()];
dr=i;
st=dr-k+1;
}
}
fout<<st<<" "<<dr<<" "<<maxim<<'\n';
}