Pagini recente » Cod sursa (job #317128) | Cod sursa (job #1156030) | Cod sursa (job #1756734) | Cod sursa (job #1583734) | Cod sursa (job #809397)
Cod sursa(job #809397)
#include <cstdio>
#include <iostream>
#include <cstdlib>
using namespace std;
#define SIZE 5000001
int deq[SIZE];
int vect[SIZE];
int main(int argc,char *argv[])
{
FILE *input = fopen("secventa.in","r");
FILE *output = fopen("secventa.out","w");
int n;
int k;
int minim = -500001;
fscanf(input,"%d%d",&n,&k);
for (int i=0;i<n;i++)
{
fscanf(input,"%d",&vect[i]);
}
int poz;
int start = 0;
int end = -1;
for (int i=0;i<n;i++)
{
while (end >= start && vect[i] <= vect[deq[end]])
{
end--;
}
end++;
deq[end] = i;
while (deq[end] - deq[start] >= k) start++;
if (minim < deq[start] && i +1 >= k)
{
minim = vect[deq[start]];
poz = i;
}
}
fprintf(output,"%d %d %d",poz-k+1+1,poz+1,minim);
fclose(input);
fclose(output);
return 0;
}