Pagini recente » Cod sursa (job #2870368) | Cod sursa (job #2863221) | Cod sursa (job #2474707) | Cod sursa (job #2776067) | Cod sursa (job #742309)
Cod sursa(job #742309)
#include <iostream>
#include <vector>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <string>
#include <list>
using namespace std;
#define LL long long
#define FORit(it,x) for (__typeof((x).begin()) it = (x).begin(); it != (x).end(); ++it)
#define INFILE "secventa.in"
#define OUTFILE "secventa.out"
#define NMAX 500001
#define VMAX 60010
int v[NMAX], u[VMAX];
list<int> s;
void ins(int i) {
while( s.size() && s.back() > v[i] ) {
s.pop_back();
}
s.push_back( v[i] );
u[v[i]]++;
}
int main() {
freopen(INFILE, "r", stdin);
freopen(OUTFILE, "w", stdout);
memset(u, 0, sizeof(u));
int n, k;
cin >> n >> k;
for(int i=0; i<k; i++) {
scanf("%d", &v[i]);
ins(i);
}
int minv = s.front(), is = 0, ie = k-1;
for(int i=k; i<n; i++) {
scanf("%d", &v[i]);
ins(i);
u[v[i-k]]--;
while( u[ s.front() ]==0 )
s.pop_front();
if( s.front() > minv ) {
minv = s.front();
is = i - k + 1;
ie = i;
}
}
cout << is+1 << " " << ie+1 << " " << minv << "\n";
return 0;
}