Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Clasament dupa rating | Diferente pentru 2-sat intre reviziile 66 si 67 | Cod sursa (job #2092145)
#include <fstream>
#include <deque>
#include <vector>
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
deque<long> Deque;
vector<long> V;
int main()
{
long N,K,A;
long BMax=0,Bi=500000,Bj=500000;
f>>N>>K;
for(long i=0;i<N;i++)
{
f>>A;
V.push_back(A);
if(!Deque.empty() && Deque.front()<=i-K)
Deque.pop_front();
if (Deque.empty()) Deque.push_back(i);
else
{
if(V[Deque.back()]<=A) Deque.push_back(i);
else
{
while(!Deque.empty() && V[Deque.back()]>=A) Deque.pop_back();
Deque.push_back(i);
}
}
if(i>=K-1 && !Deque.empty())
{
if(V[Deque.front()]>BMax)
{
Bi=Deque[0];
Bj=Bi+K-1;
BMax=V[Deque.front()];
}
}
}
g<<Bi+1<<" "<<Bj+1<<" "<<BMax;
return 0;
}