这里简单说一下,我联系这道题目,本来是想联系排序算法的,然后我用来系统函数sort排序,二分查找等等提高速度的方法;但是然并卵,每次都是运行超时啊,要疯掉了。看了一下大家的答案,发现自己陷入到排序的陷阱中了,根本不用排序的。就是一道数学题目!难受了我一晚上,睡觉前还在想到底是哪里的瓶颈,难为老年coder了。

#include<iostream>
#include<algorithm>
#include<map>
using namespace std;

struct Movie{
    int bj;
    int cj;
    int scoreb;
    int scorec;
    int index;
};
int main()
{
    int n,m,firstScore=0,secondScore=0,index=1;
    cin >> n;

    map<int,int> strMap;
    for(int i = 0; i < n;i++){
        int temp;
        cin >> temp;
        strMap[temp]++;
    }
    cin >> m;
    Movie ret[m];
    for(int i = 0; i < m;i++){
        //因为我的数据结构是这样所以会很浪费时间
        ret[i].cj = 0;
        ret[i].bj = 0;
        ret[i].scoreb = 0;
        ret[i].scorec = 0;
        ret[i].index = i+1;
        cin >> ret[i].bj;
    }
    for(int i = 0; i < m;i++){
        cin >> ret[i].cj;
        //这里不要每次都访问数组的小标,很浪费时间的。
        int tempb = strMap[ret[i].bj];
        int tempc = strMap[ret[i].cj];
        int tempi = ret[i].index;
        if(tempb >= firstScore){
            if(tempb > firstScore){
                firstScore = tempb;
                secondScore = tempc;
                index = tempi;
            }else{
                if(tempc > secondScore){
                    secondScore = tempc;
                    index = tempi;
                }
            }

        }
    }
    cout<<index<<endl;
    return 0;
}