1 条题解

  • 0
    @ 2025-9-9 23:46:52

    C++ :

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    
    using namespace std ;
    
    void f( int a[] , int n , int b[] , int m ) {
        int i = 0 , j = 0 ; bool first = true ;
        while( i < n && j < m ) {
            if( a[i] == b[j] ) {
                printf("%d " , a[i] ) ;
                i ++ ; j ++ ;
            }
            else if( a[i] > b[j] ) j ++ ;
            else i ++ ;
        }
    }
    
    void g( int a[] , int n , int b[] , int m ) {
        int i = 0 , j = 0 ; bool first = true ;
        while( i < n && j < m ) {
            if( a[i] == b[j] ) {
                printf("%d " , a[i] ) ;
                i ++ ; j ++ ;
            }
            else if( a[i] > b[j] ){
                printf("%d " , b[j] ) ;
                j ++ ;
            }
            else {
                printf("%d " , a[i] ) ;
                i ++ ;
            }
        }
        while( i < n ) {
            printf("%d " , a[i++] ) ;
        }
        while( j < m ) {
            printf("%d " , b[j++] ) ;
        }
    }
    
    void k( int a[] , int n , int b[] , int m ) {
        for( int i = 0 ; i < n ; i ++ ) {
            int p = upper_bound( b , b + m , a[i] ) - b ;
            if( p > 0 && b[p-1] == a[i] ) continue ;
            printf("%d " , a[i] ) ;
        }
    }
    
    int main() {
    
        int n , m ;
        int a[1010] , b[1010] ;
        while( ~scanf("%d" , &n ) ) {
            for( int i = 0 ; i < n ; i ++ ) scanf("%d" , &a[i] ) ; sort( a , a+n ) ;
            scanf("%d" , &m ) ;
            for( int i = 0 ; i < m ; i ++ ) scanf("%d" , &b[i] ) ; sort( b , b+m ) ;
    
            f(a,n,b,m) ; printf("\n") ;
            g(a,n,b,m) ; printf("\n") ;
            k(a,n,b,m) ; printf("\n") ;
    
        }
        return 0 ;
    }
    
    
    • 1

    信息

    ID
    1062
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者