栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2049. 奶牛摄影

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2049. 奶牛摄影

奶牛们今天非常调皮。

农夫约翰想给站成一排的奶牛拍一张照片,但是在他有机会拍下照片之前,奶牛一直在移动。

具体的说,约翰有 N 头奶牛,编号 1∼N。

约翰想拍一张奶牛以特定顺序站成一排的照片,这个顺序可以用数组 A[1…N] 来表示,其中 A[j] 表示排列中第 j 头奶牛的编号。

他按这个顺序将奶牛排成一排,但就在他按下相机上的按钮拍摄照片之前,最多一头奶牛移动到了新的位置上。

更准确地说,要么没有奶牛移动,要么一头奶牛离开她在队列中的当前位置,然后重新插入到队列中的新位置。

约翰非常沮丧,但并没有灰心,他再次按照数组 A 的顺序,排列了他的奶牛。

但是,就在他再次拍照之前,又有最多一头奶牛移动到了队列中的新位置。

在约翰放弃之前,上面的过程一共重复了五次,拍下了五张照片。

给定每张照片的内容,请你推断出最初的预定顺序 A。

每张照片显示的都是在预定顺序下,最多一头奶牛移动后的奶牛排列顺序。

每头奶牛最多只会在拍摄一张照片时移动,如果一头奶牛在拍摄一张照片时移动了,那么她就不会在拍摄其他照片时主动移动。(尽管由于其他奶牛的移动,她最终可能会处于不同的位置)

输入格式

第一行包含整数 N,表示奶牛数量。

接下来 5N 行,每 N 行描述一张照片中的奶牛顺序,每行包含一个奶牛的编号。

输出格式

共 N 行,输出预定顺序 A,每行输出一个奶牛编号。
可以证明,本题解唯一。

数据范围

1≤N≤20000

输入样例:
5
1 
2 
3 
4 
5
2
1
3
4
5
3
1
2
4
5
4
1
2
3
5
5
1
2
3
4
输入样例:
1
2
3
4
5
代码:
#include 
using namespace std;
const int N = 2e4 + 10;

int q[N];
int p[6][N];

int n;
int main()
{
    cin >> n;
    for (int i = 1; i <= 5; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            int x;
            cin >> x;
            p[i][x] = j;
        }
    }
    for (int i = 1; i <= n; i++)
        q[i] = i;
    //lambda表达式
    sort(q + 1, q + 1 + n, [&](int a, int b)
         {
             int cnt = 0;
             for(int i = 1;i <= 5;i++)
             {
                 if(p[i][a] < p[i][b])
                 cnt++;
             } 
             return cnt >= 3; });

    for (int i = 1; i <= n; i++)
        cout << q[i] << endl;

    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947795.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号