994A - Fingerprints

A. Fingerprints
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

You are locked in a room with a door that has a keypad with 10 keys corresponding to digits from 0 to 9. To escape from the room, you need to enter a correct code. You also have a sequence of digits.

Some keys on the keypad have fingerprints. You believe the correct code is the longest not necessarily contiguous subsequence of the sequence you have that only contains digits with fingerprints on the corresponding keys. Find such code.

Input

The first line contains two integers nn and mm (1n,m101≤n,m≤10) representing the number of digits in the sequence you have and the number of keys on the keypad that have fingerprints.

The next line contains nn distinct space-separated integers x1,x2,,xnx1,x2,…,xn (0xi90≤xi≤9) representing the sequence.

The next line contains mm distinct space-separated integers y1,y2,,ymy1,y2,…,ym (0yi90≤yi≤9) — the keys with fingerprints.

Output

In a single line print a space-separated sequence of integers representing the code. If the resulting sequence is empty, both printing nothing and printing a single line break is acceptable.

Examples
input
Copy
7 3
3 5 7 1 6 2 8
1 2 7
output
Copy
7 1 2
input
Copy
4 4
3 4 1 0
0 1 7 9
output
Copy
1 0
Note

In the first example, the only digits with fingerprints are 1122 and 77. All three of them appear in the sequence you know, 77 first, then 11 and then 22. Therefore the output is 7 1 2. Note that the order is important, and shall be the same as the order in the original sequence.

In the second example digits 001177 and 99 have fingerprints, however only 00 and 11 appear in the original sequence. 11 appears earlier, so the output is 1 0. Again, the order is important.


题意:一个人被锁在房子里呢,门上有个锁,锁上有输入的键盘,有0到9对应的键,键盘上有一键有指纹,

现在这个人确定密码这些指纹构成的长度最长并且对应原来的子序列就能够解锁出去。

题解:模拟 暴力 由于只有10个  在原来的序列里面依次查找,带指纹的数字,有的话,就输出,并且去掉这个数字。python的话就直接找吧。

#include<bits/stdc++.h>
using namespace std;
int n,m,a[10],b[10],vis[10];
int main()
{
    cin>>n>>m;
    for(int i=0; i<n; i++)
        cin>>a[i];
    for(int i=0; i<m; i++)
        cin>>b[i];
    for(int i=0; i<n; i++)
        for(int j=0; j<m; j++)
        {
            if(!vis[b[j]]&&a[i]==b[j])
                cout<<b[j]<<" ",vis[b[j]]=1;
        }
    return 0;
}
n,m=input().split()
a=input().split()
b=input().split()
ans=[i for i in a if i in b]
print(" ".join(ans))
n,m=map(int,input().split())
a=input().split()
b=input().split()
for i in a:
    if i in b:
        print("{}".format(i),end=" ")

猜你喜欢

转载自blog.csdn.net/memory_qianxiao/article/details/80717586