Pagini recente » Cod sursa (job #1620125) | Cod sursa (job #1662450) | Cod sursa (job #135086) | Cod sursa (job #2141166) | Cod sursa (job #2281318)
#include <fstream>
#include <deque>
#include <string>
std::ifstream cin("secventa.in");
std::ofstream cout("secventa.out");
#define maxn 500005
int v[maxn],n,k;
std::deque<int> dequ;
std::string s;
int main()
{
int ind,sol=-55555,i,t,poz=0;
cin>>n>>k;
cin.get();
getline(cin,s);
for(i=0;i<s.size();i++){
t=0;
if(s[i]=='-'){
i++;
while(s[i]>='0'&&s[i]<='9'){
t=t*10+('0'-s[i]);
i++;
}
v[++poz]=t;
}
else
if(s[i]>='0'&&s[i]<='9'){
while(s[i]>='0'&&s[i]<='9'){
t=t*10+(s[i]-'0');
i++;
}
v[++poz]=t;
}
}
for(i=1;i<=n;i++){
while(!dequ.empty()&&v[i]<v[dequ.back()])
dequ.pop_back();
dequ.push_back(i);
if(i-k==dequ.front())
dequ.pop_front();
if(i>=k&&sol<v[dequ.front()])
sol=v[dequ.front()],ind=dequ.back();
}
cout<<ind-k+1<<' '<<ind<<' '<<sol;
return 0;
}