Pagini recente » Cod sursa (job #1103569) | Cod sursa (job #1695076) | Cod sursa (job #2076699) | Cod sursa (job #312079) | Cod sursa (job #1711042)
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>
#define DIM 10000
using namespace std;
int getInt();
vector<short int> V;
deque<int> D;
char buff[DIM];
int N, K, pos;
int main()
{
freopen("secventa.in", "rt", stdin);
freopen("secventa.out", "wt", stdout);
V.assign(N+10, 0);
short maxi = -30010;
int st, dr;
N = getInt();
K = getInt();
for(int i = 1; i <= N; ++i) {
V[i] = getInt();
while(!D.empty() && V[i] < V[ D.back() ])
D.pop_back();
if(!D.empty() && i - K >= D.front())
D.pop_front();
D.push_back(i);
if(i >= K)
if(V[ D.front() ] > maxi) {
st = i - K + 1;
dr = i;
maxi = V[ D.front() ];
}
}
cout << st << ' ' << dr << ' ' << maxi << '\n';
}
int getInt() {
int number = 0;
char s = '+';
pos = DIM - 1;
while(buff[pos] < '0' || buff[pos] > '9') {
s = buff[pos];
if(++pos == DIM)
fread(buff, 1, DIM, stdin), pos = 0;
}
while('0' <= buff[pos] && buff[pos] <= '9') {
number = number * 10 + buff[pos] - '0';
if(++pos == DIM)
fread(buff, 1, DIM, stdin), pos = 0;
}
if(s == '-')
number = -number;
return number;
}