Pagini recente » Cod sursa (job #543798) | Cod sursa (job #2790485) | Cod sursa (job #1521852) | Cod sursa (job #1363805) | Cod sursa (job #2208585)
#include <bits/stdc++.h>
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
deque<int> poz;int sol=-111111,s1,s2;
int b[505005];
long long int n,k,semn,i,j;
char v[5*500005],ch[1];
void citire()
{
f>>n>>k;
f.getline(ch,1);
f.getline(v,sizeof(v));
for(i=1;i<=n;i++){
semn=1;
if(v[j]=='-'){semn=-1;j++;}
while(v[j]>='0' && v[j]<='9')
{b[i]=b[i]*10+v[j]-48;j++;}
b[i]=b[i]*semn;
j++;
}
//for(i=1;i<=n;i++)cout<<b[i]<<" ";
}
void init_baza()
{
for(int i=1;i<=k;i++)
{
while(poz.empty()==0 && b[i]<=b[poz.back()]) {poz.pop_back();}
poz.push_back(i);
}
// cout<<poz.empty();
}
void solve()
{
sol=b[poz.front()];s1=1;s2=k;
for(int i=k+1;i<=n;i++)
{
while(!poz.empty()&&b[i]<=b[poz.back()]) {poz.pop_back();}
poz.push_back(i);
while(poz.front()<i-k+1) {poz.pop_front();}
//cout<<poz.front();
if(b[poz.front()]>sol)
{sol=b[poz.front()];s2=i;s1=i-k+1;}
// cout<<sol<<" ";
}
g<<s1<<" "<<s2<<" "<<sol;
}
int main()
{
citire();
init_baza();
solve();
return 0;
}