2018携程校招笔试第二道编程题


题目看错,一直以为是题目出错,没有仔细看样例,我简直就是傻逼啊啊啊啊,重复的数字不能重复出现。。最后几分钟没改回来,怪自己傻,脑子转的慢,敲代码也慢。

以下代码是后来5分钟改完的,不一定正确。

#include
#include
#include
#include<set>
#include
#include
#include
#include
#define M 1002
using namespace std;

int a[10000],b[10000],c[10000];

int main() {
    double ans;
    int i,j,n,m;
    

    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    
    
    cin>>n;
    for(i=0;ii){
        cin>>a[i];
    }
    cin>>m;
    for(i=0;ii){
        cin>>b[i];
    }
    
    
    int mid=0;
    int cc=0;
    i=j=0;
    while(ccm){
        if(i>=n){
            if(j>=m)
                break;
            c[cc++]=b[j++];
        }else if(j>=m){
            if(i>=n)
                break;
            c[cc++]=a[i++];
        }else{
            if(a[i]>b[j]){
                c[cc++]=b[j++];
            }else if(a[i]==b[j]){
                c[cc++]=a[i++];
                ++j;
            }else{
                c[cc++]=a[i++];
            }            
        }
    }
//    cout<
    if(cc%2==0){
        ans=1.0*(c[cc/2-1]+c[cc/2])/2;
    }else{
        ans=c[cc/2];
    }
    
    cout<endl;
    
    return 0;

}