Pagini recente » Cod sursa (job #563105) | Cod sursa (job #629663) | Cod sursa (job #106167) | Cod sursa (job #483135) | Cod sursa (job #43622)
Cod sursa(job #43622)
#include <fstream>
#include <deque>
using namespace std;
void read();
void write();
int n, k;
int sol = -32000, st = 1, dr = 0, poz;
deque<int> a;
//int a[5000];
int q[500000];
int main()
{
read();
write();
return 0;
}
void read()
{
ifstream fin("secventa.in");
int x;
fin >> n >> k;
a.push_back(0);
for(int i = 1; i < k; i++)
{
fin >> x;
a.push_back(x);
// fin >> a[i];
while((st <= dr) && (a[i] <= a[q[dr]])) dr--;
dr++;
q[dr] = i;
}
for(int i = k; i <= n; i++)
{
fin >> x;
a.push_back(x);
// fin >> a[i];
while((st <= dr) && (a[i] <= a[q[dr]])) dr--;
dr++;
q[dr] = i;
while((st<= dr) && q[st] < i-k+1)
st++;
if(a[q[st]] > sol)
{
sol = a[q[st]];
poz = i;
}
}
}
void write()
{
ofstream fout("secventa.out");
fout << poz-k+1 << " " << poz << " " << sol;
fout.close();
}