Pagini recente » Cod sursa (job #3361440) | Cod sursa (job #3361433) | Cod sursa (job #3361445) | Cod sursa (job #3361352) | Cod sursa (job #3363216)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("secventa.in");
ofstream fout ("secventa.out");
long long n,k,i,mare,pozl=LLONG_MAX,pozr=LLONG_MAX;
int main()
{
fin >> n >> k;
vector<long long> v(n+1),st(n+1),dr(n+1);
stack<long long> s1,s2;
for(i=1;i<=n;i++)
fin >> v[i] ;
for(i=1;i<=n;i++)
{
while(!s1.empty() && v[i]<=v[s1.top()])
s1.pop();
if(s1.empty())
st[i]=0;
else
st[i]=s1.top();
s1.push(i);
long long j=n-i+1;
while(!s2.empty() && v[j]<=v[s2.top()])
s2.pop();
if(s2.empty())
dr[j]=-1;
else
dr[j]=s2.top();
s2.push(j);
}
for(i=1;i<=n;i++)
{
long long l,r;
l=st[i]+1;
if(dr[i]==-1)
r=n;
else
r=dr[i]-1;
if(r-l+1>=k && v[i]>mare)
{
if(l<=i-k)
l=i-k+1;
if(r>=l+k)
r=l+k-1;
pozl=l;
mare=v[i];
pozr=l+k-1;
}
//cout << i << " " << poz << endl ;
//cout << i << " " << l << " " << r << " " << v[i] << " " << mare << '\n' ;
}
//cout << poz ;
fout << pozl << " " << pozr << " " << mare;
return 0;
}