Pagini recente » Cod sursa (job #2782581) | Cod sursa (job #2522508) | Cod sursa (job #1474694) | Cod sursa (job #897285) | Cod sursa (job #2062367)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
int dim=20000000;
char buf[20000000];
int main()
{
int n,k;
int *v;
ifstream fin("secventa.in");
fin>>n>>k;
fin.get();
fin.getline(buf,dim);
v=new int[n+1];
int i;
int l=0;
int semn=0;
int numar=0;
for(i=0;buf[i]!=0;i++)
if(buf[i]=='-')
{
semn=1;
}
else
if(buf[i]==' ')
{
if(semn==1)
numar=-numar;
l++;
v[l]=numar;
numar=0;
semn=0;
}
else
{
numar=numar*10+(buf[i]-'0');
}
l++;
v[l]=numar;
deque<int> d;
int sol=-31000;
int prim,ultim;
for(i=1;i<=n;i++){
for(;!d.empty() && v[i]<=v[d.front()];)
d.pop_front();
d.push_front(i);
while(!d.empty() && i-k>=d.back())
d.pop_back();
if(k<=i && v[d.back()]>sol)
{
sol=v[d.back()];
prim=i-k+1;
ultim=i;
}
}
ofstream fout("secventa.out");
fout<<prim<<" "<<ultim<<" "<<sol;
fout.close();
delete[] v;
return 0;
}