difficultlong @ 2024-10-02 08:28:31
#include<bits/stdc++.h>
using namespace std;
int n,q;
int tb[1001],fh[1001][9],xbc[1001],xb[1001];
int main(){
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++){
scanf("%d",&tb[i]);
}
for(int i=1;i<=q;i++){
scanf("%d%d",&xbc[i],&xb[i]);
}
sort(tb+1,tb+n+1);
for(int i=1;i<=n;i++){
int a=tb[i];
int j=1;
while(a){
fh[i][j]=a%10;
a/=10;
j++;
}
}
bool flag;
for(int i=1;i<=q;i++){
int a=xb[i],m[9];
int j=1;
while(j<=xbc[i]){
m[j]=a%10;
a/=10;
j++;
}
for(int k=1;k<=n;k++){
int l=1;
flag=true;
while(l<=xbc[i]){
if(m[l]!=fh[k][l]){
flag=false;
break;
}
l++;
}
if(flag){
printf("%d\n",tb[k]);
break;
}
}
if(!flag){
printf("-1\n");
}
}
return 0;
}
本代码的错误已经修正(大佬指出了错误我才发现我犯的是那么低级的错误!!!气杀我也)
但是代码的时间复杂度太大了(没想到竟然没有超时!!!不知道是数据水,还是时间限制太松了)
求优化时间复杂度
by run_away @ 2024-10-02 08:58:30
@difficultlong 事实上