HDU1412

大水题。。

求集合的并

  1 /*
  2 
  3 */
  4 #include<algorithm>  
  5 #include<iostream>  
  6 #include<string.h>  
  7 #include<stdlib.h>  
  8 #include<stdio.h>  
  9 #include<math.h>  
 10 #include<queue>  
 11 #include<stack>  
 12 #include<map>  
 13 #include<set>  
 14 using namespace std;  
 15 typedef long long int64;  
 16 //typedef __int64 int64;  
 17 typedef pair<int64,int64> PII;  
 18 #define MP(a,b) make_pair((a),(b))   
 19 const int inf = 0x3f3f3f3f;  
 20 const double pi=acos(-1.0);  
 21 const int dx[]={1,-1,0,0};  
 22 const int dy[]={0,0,1,-1};  
 23 const double eps = 1e-8;  
 24 const int maxm = 1005;  
 25 const int maxn = 10005;
 26 
 27 int a[ maxn ],b[ maxn ];
 28 
 29 int main(){
 30     int n,m;
 31     while( scanf("%d%d",&n,&m)==2 ){
 32         for( int i=0;i<n;i++ ){
 33             scanf("%d",&a[i]);
 34         }
 35         for( int i=0;i<m;i++ ){
 36             scanf("%d",&b[i]);
 37         }
 38         sort( a,a+n );
 39         sort( b,b+m );
 40         int cur = -99999999;
 41         int ai = 0;
 42         int bi = 0;
 43         while( ai<n || bi<m ){
 44             if( ai==n ){
 45                 for( int i=bi;i<m;i++ ){
 46                     if( b[ i ]==cur ) continue;
 47                     else {
 48                         cur = b[ i ];
 49                         printf(" %d",cur);
 50                     }
 51                 }
 52                 break;
 53             }
 54             if( bi==m ){
 55                 for( int i=ai;i<n;i++ ){
 56                     if( a[ i ]==cur ) continue;
 57                     else {
 58                         cur = a[ i ];
 59                         printf(" %d",cur);
 60                     }
 61                 }
 62                 break;
 63             }
 64             if( cur==-99999999 ){
 65                 if( a[ai]<b[bi] ){
 66                     cur = a[ ai ];
 67                     ai ++;
 68                 }
 69                 else  if( a[ai]==b[bi] ){
 70                     cur = a[ ai ];
 71                     ai ++;
 72                     bi ++;
 73                 }
 74                 else {
 75                     cur = b[ bi ];
 76                     bi ++;
 77                 }
 78                 printf("%d",cur);
 79             }
 80             else {
 81                 if( a[ai]<b[bi]&&a[ai]>cur ){
 82                     cur = a[ ai ];
 83                     ai ++;
 84                     printf(" %d",cur);
 85                 }
 86                 else if( a[ai]==b[bi]&&a[ai]>cur ){
 87                     cur = a[ ai ];
 88                     ai ++;
 89                     bi ++;
 90                     printf(" %d",cur);
 91                 }
 92                 else if( a[ai]>b[bi]&&b[bi]>cur ){
 93                     cur = b[bi];
 94                     bi ++;
 95                     printf(" %d",cur);
 96                 }        
 97             }
 98         }
 99         printf("
");
100     }
101     return 0;
102 }
View Code
原文地址:https://www.cnblogs.com/xxx0624/p/3397534.html