我的思路就是先降序排序,然后两个两个一组去计算时间,如果最后不够两个一组的话就将哪一个时间直接存到temp
#include <algorithm>
#include <iostream>
using namespace std;
const int N = 30;
int res[5],ans;
int sum[5],loc[5][N];
bool cmp(int x,int y){
return x>y;
}
int main(){
for(int i=1;i<=4;i++) cin>>sum[i];
for(int i=1;i<=4;i++){
for(int j=1;j<=sum[i];j++){
cin>>loc[i][j];
}
sort(loc[i]+1,loc[i]+1+sum[i],cmp); //或者cmp处写greater<int>()
}
for(int i=1;i<=4;i++){
for(int j=1;j<=sum[i];j++){
int temp = 0;
if(loc[i][j+1]) temp = min(loc[i][j],loc[i][j+1]);
else if(!loc[i][j+1]) temp = loc[i][j];
res[i] += temp;
loc[i][j+1] = max(loc[i][j],loc[i][j+1])-temp;
}
ans+=res[i];
}
cout<<ans;
return 0;
}