Pagini recente » Cod sursa (job #1986399) | Cod sursa (job #2657458) | Cod sursa (job #753473) | Cod sursa (job #751267) | Cod sursa (job #1441234)
#include <fstream>
#include <deque>
using namespace std;
const int dmax = 500003, smax = 4000000;
deque < int > D;
char s[dmax];
int a[dmax];
int main(){
ifstream cin ("secventa.in");
ofstream cout ("secventa.out");
int N, K, start, end, worst = -dmax, numbers = 1 ;
cin >> N >> K;
cin.get();
cin.get(s, smax);
for (int i = 0 ; s[i]; i++ ) {
int sign = 1, val = 0;
if (s[i] == '-') i++, sign = -1;
while (isdigit(s[i]) )
val = 10 * val + (s[i] - '0'), i++;
a[numbers++] = val * sign;
}
for (int i = 1; i <= N; i++){
while ( !D.empty() && a[i] <= a[D.back()]) D.pop_back();
D.push_back(i);
if (D.front() == i - K ) D.pop_front();
if (i >= K){
if (a[D.front()] > worst) worst = a[D.front()], start = i - K + 1 , end = i;
}
}
cout << start << " " << end << " " << worst;
return 0;
}