luogu 3955図書管理者(NOIP 2017普及グループ第2題)


luogu 3955図書管理者(NOIP 2017普及グループ第2題)


時空制限1000 ms/128 MB

タイトルの説明


図書館には本ごとに図書コードがあり、図書を迅速に検索するために使用することができます.この図書コードは正の整数です.本を借りた読者一人一人の手には需要コードがあり、この需要コードも正の整数です.もし1冊の本の図書コードがちょうど読者の需要コードで終わるならば、この本はこの読者が必要とするものです.Dさんは図書館の管理人になったばかりで、図書館のすべての本の図書コードを知っています.彼女はあなたにプログラムを書いてもらいました.読者一人一人に対して、彼が必要とする本の中で図書コードが一番小さい本を求めました.彼が必要とする本がなければ、-1を出力してください.

にゅうしゅつりょくけいしき


入力形式:
1行目は、2つの正の整数n,qを含み、1つのスペースで分けられ、図書館の本の数と読者の数を表しています.
次のn行は、各行に正の整数が含まれており、図書館のある本の図書コードを表しています.
次のq行は、各行に2つの正の整数を含み、1つのスペースで分けられ、1つ目の正の整数は図書館の読者の需要コードの長さを表し、2つ目の正の整数は読者の需要コードを表す.
出力フォーマット:
q行は、各行に1つの整数を含み、i番目の読者が必要とする本が存在する場合、i番目の読者が必要とする本の中で図書コードが最も小さい本の図書コードをi行に出力し、そうでなければ−1を出力する.
 

入出力サンプル


サンプル#1を入力:5 5
2123
1123
23
24
24
2 23
3 123
3 124
2 12
2 12

出力サンプル#1:23
1123
-1
-1
-1

説明


【データ規模と約束】
20%のデータに対して,1≦n≦2であった.
さらに20%のデータがあり、q=1です.
さらに20%のデータがあり、すべての読者の需要コードの長さは1である.
さらに20%のデータがあり、すべての図書コードは小さい順に与えられています.
100%のデータに対して、1≦n≦1000、1≦q≦1000であり、すべての図書符号化および需要符号は1000000を超えない.
 

コード#コード#

#include
#include
using namespace std;
const int N = 1005;
const int mod[10] = {1,10,100,1000,10000,100000,1000000,10000000};
int book[N];

int main(){
	int n,q;
	cin>>n>>q;
	for (int i=1; i<=n; i++) cin>>book[i];
	sort(book+1,book+n+1);
	for (int i=1,k,code,j; i<=q; i++){
		cin>>k>>code;
		for (j=1; j<=n; j++)
			if (book[j]%mod[k]==code) break;
		if (j<=n) cout<