Pagini recente » Cod sursa (job #2728636) | Cod sursa (job #724842) | Cod sursa (job #573150) | Cod sursa (job #1573650) | Cod sursa (job #2267456)
//
// main.cpp
// Secventa
//
// Created by Darius Buhai on 23/10/2018.
// Copyright © 2018 Darius Buhai. All rights reserved.
//
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int n, k, x, i;
struct el{
int poz, val;
}nx;
struct secv{
deque<el> s, mini;
} s1, s2;
void secvente()
{
fin>>n>>k;
for(;i<k;i++)
{
fin>>nx.val;
nx.poz = i;
s1.s.push_back(nx);
while(!s1.mini.empty() && s1.mini.back().val>nx.val)
s1.mini.pop_back();
s1.mini.push_back(nx);
}
s2 = s1;
for(;i<n;i++)
{
fin>>nx.val;
nx.poz = i;
s2.s.pop_front();
s2.s.push_back(nx);
if(s2.mini.front().poz==i-k)
s2.mini.pop_front();
while(!s2.mini.empty() && s2.mini.back().val > nx.val)
s2.mini.pop_back();
s2.mini.push_back(nx);
if(s2.mini.front().val > s1.mini.front().val)
s1 = s2;
}
fout<<s1.s.front().poz+1<<" "<<s1.s.back().poz+1<<" "<<s1.mini.front().val;
}
int main() {
secvente();
return 0;
}