Pagini recente » Cod sursa (job #1826943) | Cod sursa (job #2961736) | Cod sursa (job #2014211) | Cod sursa (job #724866) | Cod sursa (job #2163764)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int i,x,y,v[500002],semn,j,p,u,maxi,n,m;
deque <int> q;
char s[500002];
int main()
{
fin>>n>>m;
fin.get();
fin.getline(s, sizeof(s));
j=0;
for(i=1; i<=n; i++) {
semn=1;
if(s[j]=='-') {
semn=-1;
j++;
}
while(s[j]>='0' && s[j]<='9') {
v[i]=v[i]*10+s[j]-'0';
j++;
}
v[i]*=semn;
j++;
}
for(i=1;i<m;++i)
{
while(!q.empty() && v[q.back()] > v[i])
{
q.pop_back();
}
q.push_back(i);
}
for(i=m;i<=n;++i)
{
while(!q.empty() && v[q.back()]>v[i])
{
q.pop_back();
}
while(!q.empty() && q.front()<=i-m)
{
q.pop_front();
}
q.push_back(i);
if(maxi<v[q.front()] && i>=m)
{
maxi=v[q.front()];
u=i;
p=i-m+1;
}
}
fout<<p<<" "<<u<<" "<<maxi<<'\n';
return 0;
}