CF670C Cinema

来源:互联网 发布:网络推广员有用吗 编辑:程序博客网 时间:2024/05/21 07:46

这是Codeforces Round #350的一道题目,其实非常简单,但在比赛的时候被坑惨了,卡在这题上让我rating掉了80多。。。。原因是不懂得运用STL里面的map,单纯的遍历而导致超时哎。不过不管怎么样,也算学到了点知识,学会了与map相关的函数,并懂了用map建立hash表能够大大的节省时间。。。。。

#include <bits/stdc++.h>using namespace std;int a[200020];int b[200020];int c[200020];map<int, int> M;int main(){    int n, m;    scanf("%d", &n);    for (int i = 1; i <= n; i++)    {        scanf("%d", &a[i]);    }    scanf("%d", &m);    for (int i = 1; i <= m; i++)    {        scanf("%d", &b[i]);    }    for (int i = 1; i <= m; i++)    {        scanf("%d", &c[i]);    }    for (int i = 1; i <= n; i++)    {        if (M.find(a[i]) != M.end())        {            M[a[i]]++;        }        else        {            M.insert(make_pair(a[i], 1));        }    }    pair<int, int> result = make_pair(M[b[1]], M[c[1]]);    int res=1;    for (int i = 2; i <= m; i++)    {        if (M[b[i]] > result.first)        {            result.first = M[b[i]];            result.second = M[c[i]];            res = i;        }        else if (M[b[i]] == result.first)        {            if (M[c[i]] > result.second)            {                result.second = M[c[i]];                res = i;            }        }    }    cout << res << endl;    return 0;}


0 0