Pagini recente » Borderou de evaluare (job #1760598) | Cod sursa (job #2140510) | Cod sursa (job #689501) | Borderou de evaluare (job #78834) | Cod sursa (job #906610)
Cod sursa(job #906610)
#include <fstream>
using namespace std;
ofstream fout ("secventa.out");
ifstream fin ("secventa.in");
int n,k,front,back,i,d[500010],maxim,x,inceput,sfarsit;
int v[500010];
int main () {
maxim=-30000;
fin>>n>>k;
for (i=1;i<=n;i++)
fin>>v[i];
front = 1; back = 0;
for (i=1;i<=n;i++) {
while (front<=back && v[i] <= v[d[back]]) back --;
d[++back]= i;
while (d[front]<=d[back] && v[d[front]]<=maxim) d[front]++;
if (i-d[front]+1>=k&&v[d[front]]>maxim) {
inceput=d[front];
sfarsit=d[back];
maxim=v[d[front]];
}
}
fout<<inceput<<" "<<sfarsit<<" "<<maxim;
fout<<"\n";
return 0;
}