Pagini recente » Clasament preONI 2006, Clasele XI-XII | Cod sursa (job #624541) | Cod sursa (job #1384458) | Cod sursa (job #2617875) | Cod sursa (job #74728)
Cod sursa(job #74728)
#include <stdio.h>
int a[500001],c[500001];
int merge(int l,int r) /* Merge-sort, c segedtomb */
{
int x,y,i;
if (l!=r ) {
merge(l,(l+r-1)/2);
merge((l+r-1)/2+1,r);
x=l;
y=(l+r-1)/2+1;
for (i=l;i<=r;i++)
if (y==(r+1)) {c[i]=a[x];x++;} else
{if (x==(l+r-1)/2+1) {c[i]=a[y];y++;}
else if (a[x]>a[y]) {c[i]=a[y];y++;}
else {c[i]=a[x];x++;} }
for (i=l;i<=r;i++) a[i]=c[i];
}
return 0;
}
int main()
{
FILE *f;
long m,i,j,kmin,pmin,ind1,ind2,k,h;
f=fopen("secventa.in","r");
fscanf(f,"%ld%ld",&m,&k);
ind1=1;
ind2=0;
a[0]=-31000;
kmin=-a[0];pmin=k;
for (i=1;i<=k;i++) {
fscanf(f,"%ld",&h);
for (j=0;h<a[ind2];ind2--) {}
ind2++;
a[ind2]=h;
c[i]=h;
if (h<kmin) {kmin=h;}
}
pmin=k;
for (i=k+1;i<=m;i++) {
fscanf(f,"%ld",&h);
for (j=0;h<a[ind2];ind2--) {}
ind2++;
a[ind2]=h;
c[i]=h;
if (c[i-k]==a[ind1]) {a[ind1]=-31000;ind1++;}
if (a[ind1]>kmin) {kmin=a[ind1];pmin=i;}
}
fclose(f);
f=fopen("secventa.out","w");
fprintf(f,"%ld %ld %ld",pmin-k+1,pmin,kmin);
fclose(f);
return 0;
}