Pagini recente » Cod sursa (job #109804) | Cod sursa (job #2185555) | Cod sursa (job #280073) | Cod sursa (job #2607992) | Cod sursa (job #1534266)
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#include <cstring>
#define x first
#define y second
#include <deque>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int n,m,ld,ls,maxi=-4000000,i,j,x,y,z,d,v[500001],k,a,ok;
deque <int> D1,D2;
string s;
int main()
{
fin>>n>>k;
fin.get();
getline(fin,s);
for(i=0;i<s.size();)
{
j++;
if(s[i]==' ')
i++;
if(s[i]=='-')
ok=-1,i++;
else
ok=1;
a=0;
while(s[i]>='0'&&s[i]<='9')
{
a*=10;
a+=s[i]-'0';
i++;
}
v[j]=a*ok;
}
for(i=1;i<=n;i++)
{
if(!D1.empty()&&D1.front()<=i-k)
D1.pop_front();
while(!D1.empty()&&v[D1.back()]>v[i])
D1.pop_back();
D1.push_back(i);
if(i>=k)
{
if(v[D1.front()]>maxi)
maxi=v[D1.front()],a=i-k+1;
}
}
fout<<a<<" "<<a+k-1<<" "<<maxi;
return 0;
}