Pagini recente » Cod sursa (job #2999057) | Cod sursa (job #926982) | Cod sursa (job #729832) | Cod sursa (job #2598229) | Cod sursa (job #956408)
Cod sursa(job #956408)
#include <fstream>
#include <iostream>
#include <deque>
using namespace std;
ifstream fi("secventa.in");
ofstream fo("secventa.out");
int n,i,ind,k,a[500001],start,finis,rs=-1<<20;
string s;
deque< int > q;
int next()
{
int semn=1,nr=0;
if (s[ind]=='-') semn=-1,ind++;
while (s[ind]!=' ') nr=nr*10+s[ind]-'0',ind++;
ind++;
return semn*nr;
}
int main()
{
fi >> n >>k; fi.get();
getline(fi,s); s+=' ';
for (i=1; i<=n; i++) a[i]=next();
//for (i=1; i<=n; i++) cout << a[i] << ' '; cout << endl;
for (i=1; i<=n; i++)
{
while (!q.empty() && a[q.back()]>=a[i]) q.pop_back();
while (!q.empty() && i-k>=q.front()) q.pop_front();
q.push_back(i);
if (i>=k && a[q.front()]>rs)
{
start=i-k+1;
finis=i;
rs=a[q.front()];
}
}
fo << start << ' ' << finis << ' ' << rs;
return 0;
}