题意:签到题,不叙述了
解题关键:模拟即可。
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
int arr[],brr[];
bool vis[];
struct node{
int id,num;
}crr[];
bool cmp(const node &a,const node &b){
return a.num<b.num;
}
int main(){
int n,m,q,p;
while(cin>>n>>m){
memset(vis,,sizeof vis);
for(int i=;i<n;i++) cin>>arr[i];
cin>>q;
for(int i=;i<q;i++) cin>>brr[i],vis[brr[i]]=true;
p=;
for(int i=;i<n;i++) if(!vis[i]) crr[p].num=arr[i],crr[p++].id=i;
if(p<=m){
sort(crr,crr+p,cmp);
int a1=crr[].id,a2=crr[].id;
if(a1>a2) swap(a1,a2);
cout<<a1<<" "<<a2<<"\n";
continue;
}
int sum=,a1,a2,ans1,ans2,minans=inf,id1,id2;
for(int i=;i<=p-m;i++){
a1=crr[i].num,id1=crr[i].id,a2=inf;
for(int j=;j<m;j++){
if(crr[i+j].num<a2) a2=crr[i+j].num,id2=crr[i+j].id;
}
if(a1+a2<minans) minans=a1+a2,ans1=id1,ans2=id2;
}
cout<<ans1<<" "<<ans2<<"\n";
}
return ;
}