2017 NOIp普及グループ第二題図書管理者
4983 ワード
タイトルの説明
図書館には本ごとに図書コードがあり、図書を迅速に検索するために使用することができます.この図書コードは正の整数です.本を借りた読者一人一人の手には需要コードがあり、この需要コードも正の整数です.もし1冊の本の図書コードがちょうど読者の需要コードで終わるならば、この本はこの読者が必要とするものです.Dさんは図書館の管理人になったばかりで、彼女は図書館のすべての本の図書のコードを知っていて、彼女はあなたにプログラムを書いてもらって、すべての読者に対して、彼の必要な本の中で図書のコードが一番小さい本を求めて、もし彼の必要な本がなければ、-1を出力してください.
この問題は個人的にソートと文字列の方法で先にソートして過程の中で2つの数を引き入れて比較の末尾の数が等しいなら出力してそれから次の数にジャンプしてもし見つからないならば出力を忘れないでください-1
図書館には本ごとに図書コードがあり、図書を迅速に検索するために使用することができます.この図書コードは正の整数です.本を借りた読者一人一人の手には需要コードがあり、この需要コードも正の整数です.もし1冊の本の図書コードがちょうど読者の需要コードで終わるならば、この本はこの読者が必要とするものです.Dさんは図書館の管理人になったばかりで、彼女は図書館のすべての本の図書のコードを知っていて、彼女はあなたにプログラムを書いてもらって、すべての読者に対して、彼の必要な本の中で図書のコードが一番小さい本を求めて、もし彼の必要な本がなければ、-1を出力してください.
この問題は個人的にソートと文字列の方法で先にソートして過程の中で2つの数を引き入れて比較の末尾の数が等しいなら出力してそれから次の数にジャンプしてもし見つからないならば出力を忘れないでください-1
var
n,m,i,j:longint;
a:array[0..1001] of longint;
d:array[0..1001,1..2] of longint;
procedure qsort(l,r:longint);
var
i,j,key,t:longint;
begin
i:=l; j:=r; key:=a[(l+r) div 2];
repeat
while a[i]do inc(i);
while a[j]>key do dec(j);
if i<=j then
begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
inc(i);
dec(j);
end;
until i>j;
if lthen qsort(l,j);
if ithen qsort(i,r);
end;
procedure find(ans,w:longint);
var
i,tot,len,j:longint;
s,s2:string;
begin
for i:=1 to n do
begin
str(a[i],s);
len:=length(s);
if len>=w then
begin
for j:=1 to len-w do
delete(s,1,1);
str(ans,s2);
if s2=s then begin
writeln(a[i]);
exit;
end;
end;
end;
writeln('-1');
end;
begin
readln(n,m);
for i:=1 to n do
readln(a[i]);
qsort(1,n);
for i:=1 to m do
begin
readln(d[i,1],d[i,2]);
find(d[i,2],d[i,1]);
end;
end.
#1:
5 5
2123
1123
23
24
24
2 23
3 123
3 124
2 12
2 12
#1:
23
1123
-1
-1
-1