#include <bits/stdc++.h>
using namespace std;
struct Node{
int v,id;
bool used;
bool operator<(const Node & t)const{
if(v == t.v) return id < t.id;
return v < t.v;
}
}a[10],b[10];
int n,k,rk[10],ans[10];
int main(){
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++){
scanf("%d",&a[i].v);
a[i].id = i;
}
for(int i=1;i<=k;i++){
scanf("%d",&b[i].v);
b[i].id = i;
}
sort(a+1,a+1+n);
sort(b+1,b+1+k);
for(int i=1;i<=k;i++){
rk[b[i].id] = i;
}
for(int i=1;i<=k;i++){
int z = rk[i];//b原来第i个在排序后是第z个
int bb = z + n - k;//a和b需要后面对齐
int m = 0x7f7f7f7f;
int x = 0;
for(int j=1;j<=n;j++){
if(j>bb && b[j-n+k].v > a[bb].v){
break;
}
if(!a[j].used && a[j].v>=b[z].v && a[j].id<m){
m = a[j].id;//找一个能满足要求的id最小的。
x = j;
}
}
a[x].used = true;//用过就标记上
if(x == 0){//没有找到能满足条件的输出-1
printf("-1\n");
return 0;
}
ans[i] = m;//记录找到的最小id
}
for(int i=1;i<=k;i++)
printf("%d ",ans[i]);
return 0;
}
用贪心方法写的,这种方法哪里有问题?? 为啥回出错啊