Pagini recente » Cod sursa (job #1447333) | Cod sursa (job #2745018) | Cod sursa (job #1014361) | Cod sursa (job #68603) | Cod sursa (job #2149876)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
deque<int> poz;int sol,s1,s2;
int a[505005];
int n,k;
void citire()
{
f>>n>>k;
for(int i=1;i<=n;i++) f>>a[i];
}
void init_baza()
{
for(int i=1;i<=k;i++)
{
while(poz.empty()==0 && a[i]<a[poz.back()]) {poz.pop_back();}
poz.push_back(i);
}
}
void solve()
{
sol=a[poz.front()];s1=1;s2=k;
for(int i=k+1;i<=n;i++)
{
while(i-poz.front()>=k && poz.empty()==0) {poz.pop_front();}
while(a[i]<=a[poz.back()] && poz.empty()==0) {poz.pop_back();}
poz.push_back(i);
if(a[poz.front()]>sol)
{sol=a[poz.front()];s2=i;s1=i-k+1;}
}
g<<s1<<" "<<s2<<" "<<sol;
}
int main()
{
citire();
init_baza();
solve();
return 0;
}