Cod sursa(job #198206)
Utilizator | Data | 9 iulie 2008 18:04:54 | |
---|---|---|---|
Problema | Secventa | Scor | 90 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.36 kb |
#include <stdio.h>
int pin=0,pf=0,minim,n,i,j,k,poz,min,nr,a[500003],x,y;
int main()
{FILE *f;
f=fopen("secventa.in","r");
fscanf(f,"%d %d",&n,&k);
for (i=1;i<=n;i++)
fscanf(f,"%d",&a[i]);
fclose(f);
poz=0;x=y=0;
for (i=1;i<=n;i++)
if (poz==0) if (n-i+1>=k) {x=i;y=i+k-1;
min=a[x];nr=1;
for (j=x+1;j<=y;j++)
if (min==a[j]) nr++;
else if (a[j]<min) {min=a[j];
nr=1;
}
poz=1;
i=y;
if ((pin==0)&&(pf==0)) {pin=x;pf=y;minim=min;}
if (min>minim) {pin=x;pf=y;minim=min;}
}
else i=n+1;
else if (a[i]<min) poz=0;
else if (min==a[i]) {x++;y++;}
else if ((a[x]==min)&&(nr>1)) {nr--;
x++;
y++;
}
else
if (a[x]!=min) {x++;y++;}
else
{x++;
y++;
min=a[x];nr=1;
for (j=x+1;j<=y;j++)
if (min==a[j]) nr++;
else if (a[j]<min) {min=a[j];
nr=1;
}
if (min>minim) {pin=x;pf=y;minim=min;}
}
f=fopen("secventa.out","w");
fprintf(f,"%d %d %d",pin,pf,minim);
fclose(f);
return 0;
}