Pagini recente » Cod sursa (job #1936806) | Cod sursa (job #2726114) | Cod sursa (job #145928) | Cod sursa (job #270909) | Cod sursa (job #2268247)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream f1("secventa.in");
ofstream f2("secventa.out");
int n,k;
char s[6000000];
int poz=0;
int v[500005];
deque<int> pozitii;
int maxim, 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++;
}
poz++;
return nr;
}
int main() {
f1>>n>>k;
finalSecvMaxim=k-1;
f1.get();
f1.getline(s,6000000);
for(int i=0;i<n;i++){
v[i]=next();
}
pozitii.push_back(0);
for(int i=1;i<k;i++){
while(v[pozitii.back()]>v[i]){
pozitii.pop_back();
}
pozitii.push_back(i);
}
maxim=pozitii.front();
finalSecvMaxim=k-1;
for(int i=k;i<n;i++){
if(pozitii.front()<=i-k) pozitii.pop_front();
while(!pozitii.empty() && v[pozitii.back()]>v[i]){
pozitii.pop_back();
}
pozitii.push_back(i);
if(v[maxim]<v[pozitii.front()]){
maxim=pozitii.front();
finalSecvMaxim=i;
}
}
f2<<finalSecvMaxim-(k-2)<<" "<<finalSecvMaxim+1<<" "<<v[maxim];
return 0;
}