这是24分的代码。
#include <iostream>
#include <algorithm>
using namespace std;
// variable
int fire[1000005];
int ice[1000005];
int fire_num, ice_num, k;
long long ans;
// function
bool big_to_small(int a, int b){
return a>b;
}
int main(){
cin >> fire_num >> ice_num >> k;
int min_num = min(fire_num, ice_num);
for(int i=1; i!=fire_num+1; i++) cin >> fire[i];
for(int i=1; i!=ice_num+1; i++) cin >> ice[i];
sort(fire+1, fire+fire_num+1, big_to_small);
if(min_num == fire_num) for(int i=min_num+1; i<=ice_num; i++) ans += ice[i];
else for(int i=min_num+1; i<=fire_num; i++) ans += fire[i];
for(int i=1; i<=min_num; i++){
if(fire[i]*2+ice[i] > fire[i]+ice[i]+k) ans += (fire[i]*2 + ice[i]);
else ans += (fire[i] + ice[i] + k);
}
cout << ans;
}
这是经过修改后AC的代码。
但是真的不知道哪里出了问题,自己写了几串数据,两种代码输出的都是一样的结果。
#include <iostream>
#include <algorithm>
using namespace std;
// variable
int fire[1000005];
int ice[1000005];
int fire_num, ice_num, k;
long long ans;
// function
bool big_to_small(int a, int b){
return a>b;
}
int main(){
cin >> fire_num >> ice_num >> k;
int min_num = min(fire_num, ice_num);
for(int i=1; i!=fire_num+1; i++) cin >> fire[i], ans+=fire[i];
for(int i=1; i!=ice_num+1; i++) cin >> ice[i], ans+=ice[i];
sort(fire+1, fire+fire_num+1, big_to_small);
for(int i=1; i<=min_num; i++){
ans += max(fire[i], k);
}
cout << ans;
}