Pagini recente » Cod sursa (job #327225) | Cod sursa (job #3130108) | Monitorul de evaluare | Cod sursa (job #2678190) | Cod sursa (job #1802202)
#include <iostream>
#include <fstream>
#include <deque>
#include <cstring>
#include <climits>
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
int a[500010],n,k,Max=INT_MIN,pos[500010],Maxp;
char sir[3600000];
deque <int> q;
void citire()
{
int s=0,vf=1,nr,cif;
f.getline(sir,3600000);
int len=strlen(sir);
for(int i=0;i<len;i++)
{
s=1;nr=0;
if(sir[i]=='-')
{
s=-1;
i++;
}
if(sir[i]<='9' && sir[i]>='0'){
while(sir[i]<='9' && sir[i]>='0'&& i<len)
{
cif=sir[i]-'0';
nr=nr*10+cif;
i++;
}
a[vf]=nr*s;
vf++;
}
}
cout << vf << "\n";
}
int main()
{
f>> n >> k;
f.get();
citire();
for(int i=1;i<=n;i++)
{
while(!q.empty()&&a[q.back()]>a[i])
q.pop_back();
q.push_back(i);
if(q.front()<=i-k)
q.pop_front();
if(i>=k&&Max<a[q.front()])
{
Max=a[q.front()];
Maxp=i-k+1;
}
}
g << Maxp << " " << Maxp+k-1 << " " << Max << "\n";
return 0;
}