Pagini recente » Cod sursa (job #1977943) | Monitorul de evaluare | Istoria paginii utilizator/artenerobert | Cod sursa (job #2017453) | Cod sursa (job #2401366)
#include <fstream>
#include <deque>
#include <cstring>
#define val first
#define poz second
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
deque < pair <int, int> > deq;
int ist,ifi,k1,maxi,n,i,x,nr,semn,k, v[500001];
char c[2000009];
int main()
{
f>>n>>k1; f.get();
semn=1;
f.getline (c,2000000);
for(i=0; c[i]!=0; i++){
if(c[i]=='-') {
semn=-1;
continue;
}
if(c[i]==' ') v[++k]=nr*semn, semn=1, nr=0;
else nr=nr* 10+(c[i]-'0');
} v[++k]=nr;
maxi=-2000000000;
k=k1;
for(i=1; i<=n; i++){
x=v[i];
while ( deq.empty()==false && x<deq.back().val ) deq.pop_back();
deq.push_back(make_pair(x,i));
if(deq.front().poz==i-k) deq.pop_front();
if(deq.front().val>maxi && i>=k ){
maxi=deq.front().val;
ist=i-k+1;
ifi=i;
}
}
g<<ist<< " "<<ifi<<" "<<maxi;
return 0;
}