Pagini recente » Cod sursa (job #3225474) | Cod sursa (job #2026970) | Cod sursa (job #3159147) | Cod sursa (job #1324621) | Cod sursa (job #537175)
Cod sursa(job #537175)
#include<stdio.h>
using namespace std;
long int n;
long int k;
long int A[500001];
long int Deck[500001];
long int Front = 1;
long int Back = 0;
long int mar = -30001;
long int poz;
void citire(void)
{
FILE *f = fopen("secventa.in","r");
fscanf(f,"%d %d",&n,&k);
for(int i=1;i<=n;i++)
{
fscanf(f,"%d ",&A[i]);
while(Front <= Back && A[i]<=A[Deck[Back]]) Back --;
Deck[++Back] = i;
if(Deck[Front] == i-k) ++Front;
if(mar < A[Deck[Front]] && i>=k)
{
mar = A[Deck[Front]];
poz = Deck[Front];
}
}
fclose(f);
}
int main()
{
FILE *f = fopen("secventa.out","w");
citire();
long int i = poz;
while(A[i-1] >= mar && mpoz-i < k && i-1) i--;
fprintf(f,"%d %d %d",i,i+k-1,mar);
fclose(f);
return 0;
}