Pagini recente » Cod sursa (job #1372552) | Cod sursa (job #1373222) | Cod sursa (job #1443796) | Cod sursa (job #1962705) | Cod sursa (job #1964175)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
deque<int> poz,sec;
string s;
int n,k,x,mx=-30001,nr,i1[500003],rez;
bool ok;
int main()
{
f>>n>>k; getline(f,s);
getline(f,s);
for(int i=0;i<s.size();++i)
{
if (s[i] == ' ') continue;
if (s[i] == '-')
{
x = 0;
i++;
while (s[i] != ' ' && i < s.size())
{
x = x * 10 - (s[i]-'0');
i++;
}
}
else if (s[i] != ' ')
{
x = 0;
while (s[i] != ' ' && i < s.size())
{
x = x * 10 + (s[i]-'0');
i++;
}
}
nr++;
if(!sec.empty() && poz.front()<=nr-k)
{
sec.pop_front();
poz.pop_front();
}
ok=false;
while(!sec.empty() && sec.back()>=x)
{
sec.pop_back();
i1[nr]=poz.back()+1;
ok=true;
poz.pop_back();
}
if(!ok && !sec.empty()) i1[nr]=poz.back()+1;
sec.push_back(x);
poz.push_back(nr);
if(i>=k)
{
if(sec.front()>mx)
{
mx=sec.front();
rez=poz.front();
}
}
}
g<<i1[rez]<<' '<<i1[rez]+k-1<<' '<<mx;
return 0;
}