ACM 数据的插入与删除

来源:互联网 发布:达内 java培训官网 编辑:程序博客网 时间:2024/06/09 12:11

数据的插入与删除

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
总提交:1182            测试通过:225

描述

在一组数据(数目不超过10000)中,插入新数,删除所有与给定数相等的数据。

输入

第一行是未排序的一组非负整数,数目不超过10000。以-1作为结束标志。

第二行是要插入的数。

第三行是要删除的数。

输出

第一行输出自小到大排好序的数。如果没有元素,输出“No elements.”(不包括引号)。

第二行输出插入后自小到大排好序的数,以“,”隔开。

第三行输出删除后自小到大排好序的数,以“,”隔开。如果没有元素,输出“No elements.”(不包括引号)。

样例输入

100 98 79 63 44 99 -1
88
79

样例输出

44,63,79,98,99,100
44,63,79,88,98,99,100
44,63,88,98,99,100

提示

 

题目来源

GUOJ


细节,细节。You can't be too careful.

还是忽略了

-1

1

1

的情况。关于","写的有些麻烦。


代码:

#include<stdio.h>//数据的插入与删除#define SWAP(x,y) {int tmp=x; x=y; y=tmp;}void fuck(int a[],int num){for(int i=0;i<num-1;i++)for(int j=i+1;j<num;j++)if(a[i] > a[j])SWAP(a[i], a[j]);}int main(){int x, a[10000]={0};int insert, del;bool exist = false; // not existint num = 0, xiabiao;while(scanf("%d",&x) && x != -1)a[num++] = x;scanf("%d",&insert);scanf("%d",&del);//if(0 == num) printf("No elements.\n");else{fuck(a, num);for(int i=0;i<num;i++){printf("%d",a[i]);if(i != num-1) printf(",");}printf("\n");}//a[num] = insert;num ++;fuck(a, num);for(int i=0;i<num;i++){printf("%d",a[i]);if(i != num-1) printf(",");}printf("\n");//for(int i=0;i<num;i++){if(a[i] == del){exist = true;xiabiao = i; // 最后一个相等的下标}}if(exist == false || (num == 1 && exist == true)) // 不存在del 或者 删除del后没有元素了printf("No elements.\n");else{for(int i=0;i<num;i++){if(a[i] != del){printf("%d",a[i]);if(xiabiao != num-1)  // the last one was deletedif(i != num-1) printf(",");elseif(i != num-2) printf(","); }}printf("\n");}return 0;}



0 0