Pagini recente » Cod sursa (job #3243404) | Cod sursa (job #106625) | Cod sursa (job #2432073) | Cod sursa (job #230910) | Cod sursa (job #2268288)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream f1("secventa.in");
ofstream f2("secventa.out");
long long n,k;
char s[5000000];
long long poz=0;
long long v[500005];
deque<long long> pozitii;
long long maxim=-30001, finalSecvMaxim;
int next(){
while((s[poz] <'0' || s[poz]>'9') && s[poz]!='-'){
poz++;
}
int nr;
if(s[poz]=='-') {
nr=-1*(s[poz+1]-'0');
poz+=2;
}
else{
nr=s[poz]-'0';
poz++;
}
while(s[poz] >='0' && s[poz]<='9'){
nr=nr*10+(s[poz]-'0');
poz++;
}
return nr;
}
int main() {
f1>>n>>k;
f1.get();
f1.getline(s,5000000);
for(int i=0;i<n;i++){
v[i]=next();
}
pozitii.push_back(0);
for(long long i=1;i<k-1;i++){
while(!pozitii.empty() && v[pozitii.back()]>v[i]){
pozitii.pop_back();
}
pozitii.push_back(i);
}
for(long long i=k-1;i<n;i++){
while(!pozitii.empty() && v[pozitii.back()]>v[i]){
pozitii.pop_back();
}
pozitii.push_back(i);
if(maxim<v[pozitii.front()]){
maxim=v[pozitii.front()];
finalSecvMaxim=i;
}
if(i-pozitii.front()==k-1) pozitii.pop_front();
}
f2<<finalSecvMaxim-k+2<<" "<<finalSecvMaxim+1<<" "<<maxim;
return 0;
}