Pagini recente » Monitorul de evaluare | Cod sursa (job #903302) | Cod sursa (job #1660830) | Cod sursa (job #2625635) | Cod sursa (job #438825)
Cod sursa(job #438825)
#include <stdio.h>
#include <stdlib.h>
int d[500000],a[500000];
int main()
{
FILE* f1;
f1=(fopen("secventa.in","r"));
int n,k;
fscanf(f1,"%d %d\n",&n,&k);
int eleje=0,vege=0,min_hely=0;
for (int i=0;i<n;i=i+2)
fscanf(f1,"%d %d",&a[i],&a[i+1]);
if (n%2)
fscanf(f1,"%d",&a[n-1]);
fclose(f1);
int min=-30001;
for (int i=0;i<n;i++)
{
{
if (d[eleje]<=i-k)
++eleje;
while ((eleje<=vege) && (a[i]<a[d[vege]]))
if ((eleje<=vege-2) && (a[i]<a[d[vege-2]]))
{
vege--;
vege--;
}
else
--vege;
++vege;
d[vege]=i;
if (i>=k-1)
if (min<a[d[eleje]])
{
min=a[d[eleje]];
min_hely=i;
}
}
}
FILE* f2;
f2=(fopen("secventa.out","w"));
fprintf(f2,"%d %d %d",min_hely-k+2,min_hely+1,min);
fclose(f2);
return 0;
}