http://hihocoder.com/contest/acmicpc2017beijingonline 2017北京网络赛题目
- 模拟一发就好…小心一点
#include<iostream>
#include<cstdio>
#define ll long long
using namespace std;
const int maxn=1000+10;
int n,m,q;
struct P{
int line,f;
P(int line=0):line(line),f(0){}
};
P p[maxn];
int main(){
while(scanf("%d %d",&n,&m)!=EOF){
for(int i=0;i<n;i++){
scanf("%d",&p[i].line);p[i].f=0;
}
scanf("%d",&q);
for(int i=0;i<q;i++){
int x;
scanf("%d",&x);
p[x].f=1;
}
int ans=1<<30; //记录目前最小的排队人数
int a,b; //记录最优a,b
for(int i=0;i<=n-m;i++){
if(p[i].f==1) continue;
int tt=1<<30,tb; //记录最优b的值和最优b的下标
int t=0;
for(int j=i+1;j<n;j++){
if(p[j].f==1) continue;
t++;
if(tt>p[j].line){
tb=j;
tt=p[j].line;
}
if(t==m-1) break;
}
if(t!=m-1) break;
if(ans>tt+p[i].line){
a=i;
b=tb;
ans=tt+p[i].line;
}
}
printf("%d %d\n",a,b);
}
return 0;
}