Pagini recente » Cod sursa (job #3155460) | Cod sursa (job #2840202) | Cod sursa (job #3224917) | Cod sursa (job #2027054) | Cod sursa (job #1843271)
#include <bits/stdc++.h>
#define NMAX 500005
#define INF 1e9
#define BMAX 50000
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int V[NMAX],p = BMAX - 1;
char buffer[BMAX + 2];
deque < int > Q;
void parsare(int &x){
bool semn = 1;
while(!isdigit(buffer[p])){
if(buffer[p] == '-')
semn = 0;
p++;
if(p == BMAX){
p = 0;
fin.read(buffer,BMAX);
}
}
x = 0;
while(isdigit(buffer[p])){
x = x * 10 + (buffer[p] - '0');
p++;
if(p == BMAX){
p = 0;
fin.read(buffer,BMAX);
}
}
if(!semn)
x = -x;
}
int main()
{
ios :: sync_with_stdio(false);
fin.tie(NULL);
int n,k,sol = -INF,x,y;
parsare(n); parsare(k);
for(int i = 1; i <= n; i++){
parsare(V[i]);
while(!Q.empty() && V[Q.back()] > V[i])
Q.pop_back();
Q.push_back(i);
if(Q.front() == i - k)
Q.pop_front();
if(V[Q.front()] > sol && i >= k){
sol = V[Q.front()];
x = i - k + 1;
y = i;
}
}
fout << x << " " << y << " " << sol;
return 0;
}