Cod sursa(job #48500)

Utilizator mihai0110Bivol Mihai mihai0110 Data 4 aprilie 2007 20:43:27
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<fstream.h>
ifstream f("secventa.in");
ofstream g("secventa.out");
long n,k,x,min,st,dr,pmin,nr,i,max,p1,p2,a[1000],b[1000];
int main()
{
f>>n>>k;
f>>x;
min=x;
pmin=1;
a[1]=x;
st=1;
dr=1;
b[1]=1;
while(dr<k)
{
f>>x;
dr++;
a[dr]=x;
b[dr]=dr;
if(x<min)
{
min=x;
pmin=dr;
}
}
nr=k;
while(nr<n)
{
f>>x;
nr++;
if(x>min&&pmin==b[1])
{
dr++;
a[dr]=x;
b[dr]=nr;

min=x;
pmin=nr;
for(i=1;i<=k;i++)
{
a[i]=a[i+1];
b[i]++;
}
}
else
if(x>min)
{
if (min>max)
{
p1=b[1];
p2=b[dr];
max=min;
}
st=pmin+1;
dr=nr;
a[dr]=x;
b[dr]=nr;
min=32000;
for(i=1;i<=dr-pmin+1;i++)
{
a[i]=a[pmin+i];
b[i]=b[pmin+i];
}
dr=dr-pmin+1;
while(dr<=k&&nr<=n)
{
f>>x;
nr++;
dr++;
a[dr]=x;
b[dr]=nr;
}
for(i=1;i<=dr;i++)
if(a[i]<min)
{
min=a[i];
pmin=b[i];
}
}
else
if(x<min)
{
if(min>max)
{
p1=b[1];
p2=b[dr];
max=min;
}
dr=0;
min=32000;
while(dr<k&&nr<=n)
{
f>>x;
nr++;
dr++;
a[dr]=x;
b[dr]=nr;
if(x<min)
{
min=x;
pmin=nr;
}
}
}
}
if(dr>=k&&min>max)
{
max=min;
p1=b[1];
p2=b[dr];
}
g<<p1<<" "<<p2<<" "<<max<<'\n';
f.close();
g.close();
return 0;
}