思路

网友投稿 241 2022-09-04

思路

B. Spongebob and Joke

time limit per test

memory limit per test

input

output

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

n and m (1 ≤ n, m ≤ 100 000) — the lengths of sequences fi and bi

n integers, determining sequence f1, f2, ..., fn (1 ≤ fi ≤ n).

m integers, determining sequence b1, b2, ..., bm (1 ≤ bi ≤ n).

Output

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.

ai, print "Ambiguity".

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

3 is replaced by 1 and vice versa, while 2

1, so it is impossible to unambiguously restore the original sequence.

fi for all i, so no sequence ai transforms into such bi

#include using namespace std;#define pb push_back#define ll long long#define mp make_pair#define f first#define s second#define pii pair < int, int >#define pll pair < ll, ll >#define all(s) s.begin(), s.end()#define sz(s) (int) s.size()#define vi vector < int >const int inf = (1ll << 31) - 1;const int mod = (int) 1e9 + 7;int cnt[100100];int f[100100];int b[100100];int pos[100100];int n, m;int main () { #ifdef LOCAL freopen ("a.in", "r", stdin); freopen ("a.out", "w", stdout); #endif cin >> n >> m; for(int i = 0; i < n; i++) { cin >> f[i]; cnt[f[i]]++; pos[f[i]] = i; } for(int i = 0; i < m; i++){ cin >> b[i]; } for(int i = 0; i 1){ cout << "Ambiguity\n"; return 0; } } cout << "Possible\n"; for(int i = 0; i < m; i++){ cout << pos[b[i]] + 1 << " "; } #ifdef LOCAL cerr << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n"; #endif return 0;}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java大数类题型训练
下一篇:蔚来被用户绑架了!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~