圖書館中每本書都有一個圖書編碼,能夠用於快速檢索圖書,這個圖書編碼是一個 正整數。 每位借書的讀者手中有一個需求碼,這個需求碼也是一個正整數。若是一本書的圖 書編碼剛好以讀者的需求碼結尾,那麼這本書就是這位讀者所須要的。 小 D 剛剛當上圖書館的管理員,她知道圖書館裏全部書的圖書編碼,她請你幫她寫 一個程序,對於每一位讀者,求出他所須要的書中圖書編碼最小的那本書,若是沒有他 須要的書,請輸出-1。ide
輸入格式:編碼
輸入文件的第一行,包含兩個正整數 n 和 q,以一個空格分開,分別表明圖書館裏 書的數量和讀者的數量。spa
接下來的 n 行,每行包含一個正整數,表明圖書館裏某本書的圖書編碼。code
接下來的 q 行,每行包含兩個正整數,以一個空格分開,第一個正整數表明圖書館 裏讀者的需求碼的長度,第二個正整數表明讀者的需求碼。blog
輸出格式:排序
輸出文件有 q 行,每行包含一個整數,若是存在第 i 個讀者所須要的書,則在第 i 行輸出第 i 個讀者所須要的書中圖書編碼最小的那本書的圖書編碼,不然輸出-1。get
5 5 2123 1123 23 24 24 2 23 3 123 3 124 2 12 2 12
23 1123 -1 -1 -1
【數據規模與約定】io
對於 20%的數據,1 ≤ n ≤ 2。event
另有 20%的數據,q = 1。class
另有 20%的數據,全部讀者的需求碼的長度均爲 1。
另有 20%的數據,全部的圖書編碼按從小到大的順序給出。
對於 100%的數據,1 ≤ n ≤ 1,000,1 ≤ q ≤ 1,000,全部的圖書編碼和需求碼均 不超過 10,000,000。
這題,排不排序都無所謂,枚舉便可
就這樣寫↓
1 #include <cstdio> 2 using namespace std; 3 int n,q; 4 int ans,noww; 5 int a[1001],b[1001],c[1001]; 6 int main() 7 { 8 //freopen("librarian.in","r",stdin); 9 //freopen("librarian.out","w",stdout); 10 scanf("%d%d",&n,&q); 11 for(int i=1;i<=n;i++) 12 scanf("%d",&a[i]); 13 for(int i=1;i<=q;i++) 14 scanf("%d%d",&b[i],&c[i]); 15 for(int i=1;i<=q;i++) 16 { 17 ans=-1;noww=1; 18 for(int j=1;j<=n;j++) 19 { 20 while(b[i]>0) 21 { 22 noww*=10; 23 b[i]--; 24 } 25 if(a[j]%noww==c[i]) 26 if(ans==-1) 27 ans=a[j]; 28 else 29 if(ans>a[j]) 30 ans=a[j]; 31 } 32 printf("%d\n",ans); 33 } 34 return 0; 35 }