题意:签到题,不叙述了
解题关键:模拟即可。
1 #include<bits/stdc++.h> 2 #define inf 0x3f3f3f3f 3 using namespace std; 4 typedef long long ll; 5 int arr[1002],brr[1002]; 6 bool vis[1002]; 7 struct node{ 8 int id,num; 9 }crr[1002]; 10 bool cmp(const node &a,const node &b){ 11 return a.num<b.num; 12 } 13 int main(){ 14 int n,m,q,p; 15 while(cin>>n>>m){ 16 memset(vis,0,sizeof vis); 17 for(int i=0;i<n;i++) cin>>arr[i]; 18 cin>>q; 19 for(int i=0;i<q;i++) cin>>brr[i],vis[brr[i]]=true; 20 p=0; 21 for(int i=0;i<n;i++) if(!vis[i]) crr[p].num=arr[i],crr[p++].id=i; 22 if(p<=m){ 23 sort(crr,crr+p,cmp); 24 int a1=crr[0].id,a2=crr[1].id; 25 if(a1>a2) swap(a1,a2); 26 cout<<a1<<" "<<a2<<" "; 27 continue; 28 } 29 int sum=0,a1,a2,ans1,ans2,minans=inf,id1,id2; 30 for(int i=0;i<=p-m;i++){ 31 a1=crr[i].num,id1=crr[i].id,a2=inf; 32 for(int j=1;j<m;j++){ 33 if(crr[i+j].num<a2) a2=crr[i+j].num,id2=crr[i+j].id; 34 } 35 if(a1+a2<minans) minans=a1+a2,ans1=id1,ans2=id2; 36 } 37 cout<<ans1<<" "<<ans2<<" "; 38 } 39 return 0; 40 }