Pagini recente » Cod sursa (job #605635) | Cod sursa (job #1008306) | Cod sursa (job #1920114) | Cod sursa (job #1254469) | Cod sursa (job #1526238)
#include <fstream>
#include <string>
int v[500000], len, s, front, x;
int pos[500000];
int N=0, k=0;
using namespace std;
int main(){
ofstream of("secventa.out");
ifstream f("secvqnta.in");
int max = -300000, p1 = 0, p2 = 0;
string s;
getline(f, s);
int j = 0;
while (s[j] != ' '){
N = N * 10 + s[j] - '0';
++j;
}
++j;
while (j<s.size()){
k = k * 10 + s[j] - '0';
++j;
}
bool semn;
front = 1; len = 0;
getline(f, s);
s += ' ';
j = 0;
for (long i = 1; i <= N; ++i){
semn = 0;
while (s[j] != ' '){
if (s[j] == '-')semn = 1;
else
v[i] = v[i] * 10 + s[j] - '0';
++j;
}
if (semn)v[i] *= -1;
++j;
while (len >= front && v[i] <= v[pos[len]]) --len;
pos[++len] = i;
if (pos[front] <= i - k)
++front;
if (i >= k && v[pos[front]] > max){
max = v[pos[front]]; p2 = i;
}
}
of <<p2-k+1<<" "<<p2 << " "<<max<<"\n";
}