Pagini recente » Cod sursa (job #1054114) | Cod sursa (job #1086045) | Cod sursa (job #108941) | Cod sursa (job #630693) | Cod sursa (job #1149446)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
int valoare[500001];
int main()
{
ifstream intrare("secventa.in");
ofstream iesire("secventa.out");
deque<int> coada;
int n,i,k,maxim=-31000,sus,jos,maximcurent,t;
intrare>>n;
intrare>>k;
for (i=1;i<=n;i++)
{
intrare>>valoare[i];
while ( !coada.empty() && i-coada.front()>=k && valoare[coada.front()]<valoare[i] )
{
coada.pop_front();
}
if (!coada.empty() && valoare[coada.back()]<valoare[i] && coada.back()-coada.front()>=k )
{
while (!coada.empty())
{
coada.pop_back();
}
}
coada.push_back(i);
if (coada.back()-coada.front()>=k-1)
{
maximcurent=31000;
for (t=coada.front();t<=coada.back();t++)
{
if (valoare[t]<maximcurent){maximcurent=valoare[t];}
}
if (maximcurent>maxim){maxim=maximcurent;sus=coada.front();jos=coada.back();}
}
}
iesire<<sus<<" "<<jos<<" "<<maxim<<"\n";
}