Pagini recente » Cod sursa (job #857607) | Cod sursa (job #1563378) | Cod sursa (job #787994) | Cod sursa (job #2405099) | Cod sursa (job #2644975)
#include <bits/stdc++.h>
using namespace std;
ifstream r("secventa.in");
ofstream w("secventa.out");
deque<int>d;
int v[500002], n, k, maxim=-30001, xf, yf, seq_count = 0, sign, nr;
string str;
void read() {
char c;
getline(r, str);
sign = 1;
if(c == '-') {
sign = -1;
}
if(isdigit(c) ) {
nr *= 10;
nr += c - '0';
}
for(int i = 0; i < (int)str.size(); ++i) {
if(str[i] == ' ') {
v[seq_count] = nr * sign;
++seq_count;
sign = 1;
nr = 0;
continue;
}
if(str[i] == '-') {
sign = -1;
}
if(isdigit(str[i]) ) {
nr *= 10;
nr += str[i] - '0';
}
}
v[seq_count] = nr * sign;
}
int main()
{
r>>n>>k;
r.get();
read();
for(int i=0; i<n; i++)
{
if(i<k-1)
{
while(d.size()!=0 && v[i]<d.back())
{
d.pop_back();
}
d.push_back(v[i]);
}
else
{
if(i>=k && v[i-k]==d.front())
{
d.pop_front();
}
while(d.size()!=0 && v[i]<d.back())
{
d.pop_back();
}
d.push_back(v[i]);
if(d.front()>maxim)
{
maxim=d.front();
xf=i;
yf=i-k+1;
}
}
}
w<<yf+1<<" "<<xf+1<<" "<<maxim;
return 0;
}