Pagini recente » Cod sursa (job #1691478) | Cod sursa (job #2312711) | Cod sursa (job #438878) | Cod sursa (job #2973924) | Cod sursa (job #2314975)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
const int Maxx=5e5+2;
const int INF=(1<<30);
deque <int> Q;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
string s;
int n,k;
int A[Maxx];
int st,dr,val=INF*-1;
void parsare();
int main() {
fin>>n>>k;
fin.get();
getline(fin,s);
parsare();
for (int i=1;i<=n;++i){
while (!Q.empty() && A[i]<=A[Q.back()]){
Q.pop_back();
}
Q.push_back(i);
if (i-k==Q.front()){
Q.pop_front();
}
if (i>=k && val<A[Q.front()]){
val=A[Q.front()];
dr=i;
st=i-k+1;
}
}
fout<<st<<" "<<dr<<" "<<val;
return 0;
}
void parsare(){
int sign;
int nr;
int len=s.size(),i,ps=0;
for (i=1;i<=len;++i){
if (s[i]==' ') continue;
if (s[i]=='-'){
sign=-1;
++i;
} else {
sign=1;
}
nr=0;
while ('0'<=s[i] && s[i]<='9'){
nr=nr*10+(s[i]-'0');
++i;
}
nr*=sign;
A[++ps]=nr;
}
}