cf 599 B (stl)
2015-11-25 20:21
375 查看
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
output
input
output
input
output
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.
//stl 真心强大
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.
//stl 真心强大
#include <bits/stdc++.h> using namespace std; vector <int> v[100001]; int res[100001]; int main() { int n,m,a,cnt=0,flag=0,mark=0; for(int i=0;i<100001;i++) v[i].clear(); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&a); v[a].push_back(i); } for(int i=0;i<m;i++) { scanf("%d",&a); if(v[a].size()==0) { flag=1; continue; } if(v[a].size()>1) { mark=1; continue; } res[cnt++]=v[a][0]; } if(flag) printf("Impossible\n"); else if(mark) printf("Ambiguity\n"); else { printf("Possible\n"); for(int i=0;i<cnt;i++) printf("%d ",res[i]); } return 0; }
相关文章推荐
- Prime RingProblem素环问题 14
- Java的对象问题
- Number of 1 BitsWrite a function that takes an unsigned integer and returns the number of ’1' bits i
- Alfred 2 使用指南
- python 短语查询(中文版本+英文版本)
- 排序---选择排序
- Uniform Generator统一发电机 13
- 在imac上面Android NDK环境变量的配置
- 第二次spring冲刺第2天
- 用纯css改变下拉列表select框的默认样式(不兼容IE10以下)
- Code(容斥,好题)
- Scrapy Item Loaders机制详解
- cf 599 A (模拟)
- spark 常用命令
- 数组Array、数组API
- DataStage 九、数据交换到MySQL以及乱码问题
- BZOJ 3106: [cqoi2013]棋盘游戏(对抗搜索)
- 最短路(Dijkstra模板题)
- <一>SQL优化1-4
- Shell—AWK—脚本实例