Pagini recente » Cod sursa (job #2364842) | Cod sursa (job #609761) | Istoria paginii runda/ia | Cod sursa (job #7908) | Cod sursa (job #1469355)
#include<fstream>
#include<deque>
#include<cstring>
#define nmax 500010
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
deque <int> deq;
int i,n,k,x[nmax],s,p,u,a,j,e;
char sir[8*nmax];
int main()
{
f>>n>>k;f.get();
f.getline(sir,8*nmax);
e=1;
int r=strlen(sir);
for(i=0;i<=r;i++)
{
if(sir[i]=='-')
e=-1;
else
if(sir[i]>='0' && sir[i]<='9')
a=a*10+(sir[i]-'0');
else
{
x[++j]=a*e;
a=0;
e=1;
}
}
for(i=1;i<=k;i++)
{
while(!deq.empty() && x[i]<=x[deq.back()])
deq.pop_back();
deq.push_back(i);
}
s=x[deq.front()];
p=1;
u=k;
for(i=k+1;i<=n;i++)
{
while(!deq.empty() && x[i]<=x[deq.back()])
deq.pop_back();
deq.push_back(i);
if(deq.front()==i-k)
deq.pop_front();
if(x[deq.front()]>s)
{
s=x[deq.front()];
p=i-k+1;
u=i;
}
}
g<<p<<' '<<u<<' '<<s;
return 0;
}