Pagini recente » Cod sursa (job #2892632) | Cod sursa (job #3207652) | Cod sursa (job #1424487) | Cod sursa (job #3131748) | Cod sursa (job #373330)
Cod sursa(job #373330)
#include <fstream>
#include <deque>
using namespace std;
deque <int> m;
int a[500005];
int main()
{ int i,n,k;
ifstream fin("secventa.in");
fin>>n>>k;
for (i=1;i<=n;++i) fin>>a[i];
fin.close();
for (i=1;i<=k;++i)
{
if (!m.empty())
if (a[i]<a[m.front()]) m.erase(m.begin(),m.end());
else {
while (a[i]<=a[m.back()]) m.pop_back();
}
m.push_back(i);
}
int MIN,pMIN;
MIN=a[m.front()]; pMIN=m.front();
for (i=k+1;i<=n;++i)
{
if (a[i]<a[m.front()]) m.erase(m.begin(),m.end());
else {while (a[i]<=a[m.back()]) m.pop_back();}
m.push_back(i);
if (m.front()==i-k) m.pop_front();
if (a[m.front()]>MIN) {MIN=a[m.front()]; pMIN=m.front();}
}
ofstream fout("secventa.out");
fout<<pMIN<<" "<<pMIN+k-1<<" "<<MIN;
fout.close();
return 0;
}