Pagini recente » Istoria paginii utilizator/darkeagle | Monitorul de evaluare | Istoria paginii utilizator/moisemaria | Monitorul de evaluare | Cod sursa (job #826624)
Cod sursa(job #826624)
#include <cstdio>
#include <deque>
using namespace std;
deque <int> deq;
int a[500005];
long long n,i,k,baza,inceput,sfarsit;
char buffer[3500002];
int main() {
FILE *inputfile,*outputfile;
inputfile = fopen("secventa.in","r");
outputfile = fopen("secventa.out","w");
setbuf(inputfile,buffer);
fscanf(inputfile,"%lld %lld",&n,&k);
for (i=1;i<=k;i++) {
fscanf(inputfile,"%d",&a[i]);
while (!deq.empty() && a[i] <= a[deq.back()]) deq.pop_back();
deq.push_back(i);
}
baza = a[deq.front()];
inceput = 1;
sfarsit = k;
for (i=k+1;i<=n;i++) {
fscanf(inputfile,"%d",&a[i]);
while (!deq.empty() && a[i] <= a[deq.back()]) deq.pop_back();
deq.push_back(i);
if (deq.front() == i-k) deq.pop_front();
if (a[deq.front()] > baza) {
baza = a[deq.front()];
inceput = i-k+1;
sfarsit = i;
}
}
fprintf(outputfile,"%lld %lld %lld\n",inceput,sfarsit,baza);
return 0;
}