这个题目没有规定防御力不重复吧,那么如果是这种样例 5 5 0 0 0 1 1000 1000 1200 1200 1200 1200 正常来说输出应该是3600,但是按照完全ac的代码就会是3400
反而我修改过的会变成有些wa,大家帮忙看看
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a[100010],b[100010];
int n,m,sum_attack=0,sum_defend=0,startloc=1;
cin>>n>>m;
for(int i=1;i<=n;i++){ //防御
cin>>a[i];
}
for(int i=1;i<=m;i++){ //攻击
cin>>b[i];
}
sort(a+1,a+n+1,less<int>());
sort(b+1,b+m+1,less<int>());
int pointer_loc=1;
for(int i=1;i<=m;i++){
if(a[pointer_loc]==0) {
pointer_loc++;
i--;//这个地方就是问题所在
}
if(i>=1&&b[i]>a[pointer_loc]&&a[pointer_loc]!=0){
b[i]=0;
a[pointer_loc]=0;
pointer_loc++;
}
}
for(int i=1;i<=m;i++){
sum_attack+=b[i];
}
for(int i=1;i<=n;i++){
sum_defend+=a[i];
}
if(sum_defend==0){
cout<<sum_attack;
}
else{
cout<<0;
}
system("pause");
return 0;
}