Codeforces 299 B Spongebob and Joke

简介:
B. Spongebob and Joke
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

While Patrick was gone shopping, Spongebob decided to play a little trick on his friend. The naughty Sponge browsed through Patrick's personal stuff and found a sequence a1, a2, ..., am of length m, consisting of integers from 1 to n, not necessarily distinct. Then he picked some sequence f1, f2, ..., fn of length n and for each number ai got number bi = fai. To finish the prank he erased the initial sequence ai.

It's hard to express how sad Patrick was when he returned home from shopping! We will just say that Spongebob immediately got really sorry about what he has done and he is now trying to restore the original sequence. Help him do this or determine that this is impossible.

Input

The first line of the input contains two integers n and m (1 ≤ n, m ≤ 100 000) — the lengths of sequences fi and bi respectively.

The second line contains n integers, determining sequence f1, f2, ..., fn (1 ≤ fi ≤ n).

The last line contains m integers, determining sequence b1, b2, ..., bm (1 ≤ bi ≤ n).

Output

Print "Possible" if there is exactly one sequence ai, such that bi = fai for all i from 1 to m. Then print m integers a1, a2, ..., am.

If there are multiple suitable sequences ai, print "Ambiguity".

If Spongebob has made a mistake in his calculations and no suitable sequence ai exists, print "Impossible".

Sample test(s)
input
3 3
3 2 1
1 2 3
output
Possible
3 2 1 
input
3 3
1 1 1
1 1 1
output
Ambiguity
input
3 3
1 2 1
3 3 3
output
Impossible
Note

In the first sample 3 is replaced by 1 and vice versa, while 2 never changes. The answer exists and is unique.

In the second sample all numbers are replaced by 1, so it is impossible to unambiguously restore the original sequence.

In the third sample fi ≠ 3 for all i, so no sequence ai transforms into such bi and we can say for sure that Spongebob has made a mistake.

题目大意:
给你n个f[i],m个b[i],然后问你能不能找到m个a[i],使得b[i]=f[a[i]],然后输出a[i],如果有多种可能的话输出
Ambiguity
,没有的话输出
Impossible
 
       
解体思路:	
 
       
 
       
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <algorithm>
#include <set>
using namespace std;

#define MM(a) memset(a,0,sizeof(a))

typedef long long LL;
typedef unsigned long long ULL;
const int maxn = 1e5+5;
const int mod = 1e9+7;
const double eps = 1e-8;
const int INF = 0x3f3f3f3f;
LL gcd(LL a, LL b)
{
    if(b == 0)
        return a;
    return gcd(b, a%b);
}
int b[maxn],f[maxn];
int vis[maxn];
int data[maxn];
int cnt[maxn];
int main()
{
    int n, m;
    while(~scanf("%d%d",&n,&m))
    {
        MM(vis);
        MM(cnt);
        for(int i=1; i<=n; i++)
        {
            scanf("%d",&b[i]);
            vis[b[i]] = i;
            cnt[b[i]]++;
        }
        for(int i=1; i<=m; i++)
            scanf("%d",&f[i]);
        bool ok = false, yes = false, flag = false;
        for(int i=1,j=1; i<=m; i++)
        {
            if(vis[f[i]] == 0)
            {
                ok = true;
                break;
            }
            if(cnt[f[i]] > 1)
                yes = true;
            else
                data[j++] = vis[f[i]];
        }
        if(ok)
            puts("Impossible");
        else
        {
            if(yes)
                puts("Ambiguity");
            else
            {
                puts("Possible");
                for(int i=1; i<m; i++)
                    cout<<data[i]<<" ";
                cout<<data[m]<<endl;
            }
        }
    }
    return 0;
}


目录
相关文章
|
缓存 边缘计算 监控
2024年前端性能优化的新策略
【10月更文挑战第3天】本文分享了一些2024年前端性能优化的新策略,希望能够为前端开发者提供实用的参考和指导。在实际开发中,应根据应用的具体需求和场景选择合适的优化方法。
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的英语学习交流平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的英语学习交流平台的详细设计和实现(源码+lw+部署文档+讲解等)
173 0
|
安全 Java
面试官:线程调用2次start会怎样?我支支吾吾没答上来
面试官:线程调用2次start会怎样?我支支吾吾没答上来
112 1
非关系数据库
6.5 非关系型数据库 1.非关系型数据的概念 非关系型数据库也叫NoSQL数据库,全称是Not Only SQL。 关系型数据库与非关系型数据库的区别: 关系型数据库通过外键关联来建立表与表之间的关系非关系型数据库通常指数据以对象的形式存储在数据库中而对象之间的关系通过每个对象自身的属性来决定。 2.NoSQL数据库的特点: (1) 模式自由 不需要定义表结构,数据表中的每条记录都可能有不同的属性和格式 (2) 逆规范化 不遵循范式要求,去掉完整性约束,减少表之间的依赖. (3) 弹性可扩展 可在系统运行的过程中,动态的删除和增加节点 (4)多副本异步复制 数据快速写入一个节点,其余节
|
测试技术 uml
UML--------行为图(状态图、活动图)
UML--------行为图(状态图、活动图)
|
canal SQL 关系型数据库
10.【canal】canal从入门到放弃-mysql+canal+rocketmq实现数据库同步-canal简单使用
【canal】canal从入门到放弃-mysql+canal+rocketmq实现数据库同步-canal简单使用
10.【canal】canal从入门到放弃-mysql+canal+rocketmq实现数据库同步-canal简单使用
基于C#的ArcEngine二次开发51:获取图层字段唯一值列表(Get Unique Values)
基于C#的ArcEngine二次开发51:获取图层字段唯一值列表(Get Unique Values)
基于C#的ArcEngine二次开发51:获取图层字段唯一值列表(Get Unique Values)
|
Java Spring 容器
《SpringBoot系列十二》:如何自定义条件装配(由@ConditionalOnClass推导)
《SpringBoot系列十二》:如何自定义条件装配(由@ConditionalOnClass推导)
568 0
《SpringBoot系列十二》:如何自定义条件装配(由@ConditionalOnClass推导)
|
SQL Windows
SQLOS&#39;s memory manager and SQL Server&#39;s Buffer Pool
from:http://blogs.msdn.com/b/slavao/archive/2005/02/11/371063.aspx SQLOS's memory manager consists of several components such a...
908 0