Pagini recente » Cod sursa (job #1370751) | Cod sursa (job #394985) | Cod sursa (job #2075929) | Cod sursa (job #162113) | Cod sursa (job #2267430)
//
// 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;
struct secv{
deque<pair<int,int>> s, mini;
} s1, s2;
pair<int, int> nx;
void secvente()
{
fin>>n>>k;
for(int i=0;i<k;i++)
{
fin>>nx.second;
nx.first = i;
s1.s.push_back(nx);
while(!s1.mini.empty() && s1.mini.back().second>nx.second)
s1.mini.pop_back();
s1.mini.push_back(nx);
}
s2 = s1;
for(int i=k;i<n;i++)
{
fin>>nx.second;
nx.first = i;
s2.s.pop_front();
s2.s.push_back(nx);
if(!s2.mini.empty() && s2.mini.front().first-1<(i-k))
s2.mini.pop_front();
while(!s2.mini.empty() && s2.mini.back().second>nx.second)
s2.mini.pop_back();
s2.mini.push_back(nx);
if(s2.mini.front().second > s1.mini.front().second)
s1 = s2;
}
if(!s1.s.empty())
fout<<s1.s.front().first+1<<" "<<s1.s.back().first+1<<" "<<s1.mini.front().second;
}
int main() {
secvente();
return 0;
}