{A} + {B}
#include<stdio.h> #include<algorithm> using namespace std; int A[10010],B[10010],visit[10010],C[10010];//一开始数组开小了,提示runtime error
accese .. int main( ) { int N,M,i,j,k; while(scanf("%d%d",&N,&M)!=EOF) { k=0; memset(visit,0,sizeof(visit)); for(i=0;i<N;i++) scanf("%d",&A[i]); for(j=0;j<M;j++) scanf("%d",&B[j]); sort(A,A+N); sort(B,B+M); for(i=0;i<N;i++) for(j=0;j<M;j++) if(A[i]==B[j]) visit[i]=1; i=j=0; while(i<N&&j<M) { if(A[i]<B[j]&&!visit[i]) C[k++]=A[i++]; else if(A[i]>B[j]) C[k++]=B[j++]; //刚开始的时侯在这里没有考虑到相等的情况。。wa了好几次 else if(A[i]==B[j])//如果相等时不处理,将一直死循环。。 i++; } while(i<N&&!visit[i]) C[k++]=A[i++]; while(j<M) C[k++]=B[j++]; for(i=0;i<k;i++) printf(i?" %d":"%d",C[i]); puts(""); } return 0; }
posted on 2011-05-01 10:51 more think, more gains 阅读(190) 评论(0) 收藏 举报