4.23美团笔试第一题黑白格子 积累人品

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <map>
using namespace std;
map<int, int> mapleft;
map<int, int> mapright;
int map1[100010];
int sum_left(int k)
{
    map<int, int>::reverse_iterator  iter;
    int sum = 0;
    int num = mapleft.rbegin()->first;
    for(iter = mapleft.rbegin(); iter != mapleft.rend(); iter++)
    {
        //cout<<iter->first<<" l "<<iter->second<<endl;
        if(sum<(iter->second)&&k!=(iter->first))
        {
            sum = iter->second;
            num = iter->first;
        }
    }
    if(sum==0)
        return 999999999;
    return num;
}
int sum_right(int k)
{
    map<int, int>::reverse_iterator  iter;
    int sum = 0;
    int num = mapright.rbegin()->first;
    for(iter = mapright.rbegin(); iter != mapright.rend(); iter++)
    {
       // cout<<iter->first<<" r "<<iter->second<<endl;
        if(sum<(iter->second)&&k!=(iter->first))
        {
            sum = iter->second;
            num = iter->first;
        }
    }
    if(sum==0)
        return 999999999;
    return num;
}
int main()
{
    mapleft.clear();
    mapright.clear();
    int n,m;
    scanf("%d %d",&n,&m);
    int sum = 0;
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<m; j++)
        {
            int temp;
            scanf("%d",&temp);
            map1[sum++] = temp;
        }
    }
    map<int,int>::iterator  it;
    for(int i=0; i<sum; i=i+2)
    {
        it = mapleft.find(map1[i]);
        if(it==mapleft.end())
            mapleft[map1[i]] = 1;
        else
            mapleft[map1[i]]++;
    }
    for(int i=1; i<sum; i=i+2)
    {
        it = mapright.find(map1[i]);
        if(it==mapright.end())
            mapright[map1[i]] = 1;
        else
            mapright[map1[i]]++;
    }
    int zleft = sum_left(999999999);
    int zongleft ;
    if(sum_right(zleft)==999999999)
       zongleft = mapleft[zleft];
    else
       zongleft = mapleft[zleft]+mapright[sum_right(zleft)];

    int zright = sum_right(999999999);
    int zongright;
    if(sum_left(zright)==999999999)
       zongright = mapright[zright];
    else
       zongright = mapright[zright]+mapleft[sum_left(zright)];

    //printf("%d %d\n",zongleft,zongright);
    if(zongright>zongleft)
        printf("%d\n",m*n-zongright);
    else
         printf("%d\n",m*n-zongleft);
    return 0;
}

#笔试题目#
全部评论
厉害啊
点赞 回复 分享
发布于 2019-04-23 21:34
点赞 回复 分享
发布于 2019-04-23 21:35
哇 不明觉厉
点赞 回复 分享
发布于 2019-04-23 21:36
还没搞出来
点赞 回复 分享
发布于 2019-04-23 21:39

相关推荐

joe2333:怀念以前大家拿华为当保底的日子
点赞 评论 收藏
分享
Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务