代码实现:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int card[1005];
int my_card[55];
int cmp(int a,int b){
return a>b;
}
int main(){
int m,n,ans=0;
while(~scanf("%d%d",&m,&n),(m||n)){
ans++;
memset(card,0,sizeof(card));
for(int i=0;i<n;i++){
scanf("%d",&my_card[i]);
card[my_card[i]]=1;
}
sort(my_card,my_card+n,cmp);
int cnt=0,cnt1=0;
for(int i=n*m;i>0&&cnt1<=n;i--){
if(card[i]==2) continue;
cnt1++;
if(card[i]==1) cnt++;
else if(card[i]==0) card[my_card[cnt1-1]]=2;
}
printf("Case %d: %d\n",ans,cnt);
}
}
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int card[1005];
int cmp(int a,int b){
return a>b;
}
int main(){
int m,n,ans=0;
while(~scanf("%d%d",&m,&n),(m||n)){
ans++;
memset(card,0,sizeof(card));
int v;
for(int i=0;i<n;i++){
scanf("%d",&v);
card[v]=1;
}
int cnt=0;
for(int i=n*m;i>0;i--){
if(card[i]==2) continue;
if(card[i]==1) {
cnt++;
//printf("%d ",i);
}
else if(card[i]==0){
for(int j=i-1;j>0;j--){
if(card[j]==1){
card[j]=2;
break;
}
}
}
}
//printf("\n");
printf("Case %d: %d\n",ans,cnt);
}
}