var a,b:array[0..2000]of integer;
n,m,i,j,t,k:longint;
begin
read(n,m);
for i:=1 to n do readln(a[i]);
for i:=1 to m do readln(b[i]);
for i:=1 to m do
if b[i]=0 then b[i]:=301;
for i:=1 to m-1 do
for j:=i+1 to m do
if b[i]<b[j] then begin
t:=b[i];b[i]:=b[j];b[j]:=t;
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]<a[j] then begin
t:=a[i];a[i]:=a[j];a[j]:=t;
end;
k:=1;
for i:=1 to n do
for j:=1 to m do
if a[i]>b[j] then
begin
dec(m); b[k]:=301; break;
end;
writeln(m);
end.
积分不多,意思意思下了;
for j:=1 to m do
if a[i]>b[j] then
begin
dec(m); b[k]:=301; break;
end;
dec(m) 后 m的值会变小
你可以用一个变量K
k := m
for i:=1 to n do
for j:=1 to m do
if (a[i]>b[j]) and (b[j]>0)then
begin
dec(k); b[j]:=301; break;
end;
int tao[10000],ping[10000],pn,tm;
void quick(int h,int r)
{
if(h<r)
{
int t=tao[h],i=h,j=r;
while(i<j)
{
while(i<j && tao[j]<t)
j--;
if(i<j)
{
tao[i]=tao[j];
i++;
}
while(i<j && tao[i]>t)
i++;
if(i<j)
{
tao[j]=tao[i];
j--;
}
}
tao[i]=t;
quick(h,i-1);
quick(i+1,r);
}
}
main()
{
int i,j;
scanf("%d%d",&pn,&tm);//输入苹果,陶陶数量
for(i=0;i<pn;i++)
scanf("%d",&ping[i]);// 苹果可碰到高度
for(i=0;i<tm;i++)
scanf("%d",&tao[i]);//陶陶高度
int sum=tm;//陶陶剩下数量
quick(0,tm-1);//排陶陶高度
for(i=0;i<pn;i++)//让苹果一个个的试
{
for(j=0;j<tm;j++)//让苹果摘尽量高的陶陶
{
if(tao[j]!=0 && ping[i]>tao[j])//如果陶陶高度不为0,并且苹果能摘到
{
sum--;//此陶陶被摘走
tao[j]=2000;//此陶陶不能再次被摘
break;换下一个陶陶
}
if(tao[j]==0)//如果次陶陶高度为0,则所有苹果都无法摘
break;
}
}
printf("%d",sum);//输出剩余陶陶数量
}