Pagini recente » Cod sursa (job #209935) | Cod sursa (job #2359714) | Cod sursa (job #1263153) | Cod sursa (job #2472784) | Cod sursa (job #90464)
Cod sursa(job #90464)
#include <stdio.h>
struct baza
{
int p,e,s;
};
int v[500005];
int main()
{
int i,j,k,n,e;
baza m,c;
FILE *in=fopen("secventa.in","r");
fscanf(in,"%d%d",&n,&k);
fscanf(in,"%d",&v[0]);
m.s=0; m.e=k-1; m.p=0;
for (i=1; i<k; i++)
{
fscanf(in,"%d",&v[i]);
if (v[m.p]>v[i])
m.p=i;
}
for (i=k; i<n; i++)
fscanf(in,"%d",&v[i]);
fclose(in);
for (i=1; i<=n-k; i++)
{
c.p=i; c.s=i; c.e=i+k-1;
for (j=i+1; j<i+k; j++)
if (v[c.p]>v[j])
c.p=j;
i=c.p;
if (v[c.p]>v[m.p])
{
m.p=c.p;
m.e=c.e;
m.s=c.s;
}
else
if (v[c.p]==v[m.p])
if (v[c.s]<v[m.s])
{
m.p=c.p;
m.e=c.e;
m.s=c.s;
}
else
if (v[c.s]==v[m.s])
{
/* j=c.e;
while (j<n && v[j]>=v[c.p])
{
if (v[c.e]>v[j])
c.e=j;
j++;
}
j=m.e;
e=m.e;
while (j<n && v[j]>=v[m.p])
{
if (v[e]>v[j])
e=j;
j++;
}*/
if (v[m.e]>v[c.e])
{
m.p=c.p;
m.e=c.e;
m.s=c.s;
}
}
}
FILE *out=fopen("secventa.out","w");
fprintf(out,"%d %d %d\n",m.s+1,m.e+1,v[m.p]);
fclose(out);
return 0;
}