调了好久都不过。。。(最近在学c++,所以用了vector做)
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
vector<long long> a,b;
int main()
{
int n,m;
long long ans=0,temp;
cin>>n>>m;
for(int i=0;i<n-1;i++) //列
{
scanf("%lld",&temp);
a.push_back(temp);
}
for(int i=0;i<m-1;i++) //行
{
scanf("%lld",&temp);
b.push_back(temp);
}
sort(a.begin(),a.end());
sort(b.begin(),b.end());
int raw=1,col=1;
long long raw_max,col_max;
char ch;
while(raw<n||col<m)
{
if(!b.empty())raw_max=*(b.end()-1);
else raw_max=0;
if(!a.empty())col_max=*(a.end()-1);
else col_max=0;
if(raw_max>col_max)ch='r';
else if(raw_max<col_max)ch='c';
else
{
if(n>=m)ch='r';
else ch='c';
}
if(ch=='c')
{
ans+=col_max*col;
raw++;
a.pop_back();
}
else
{
ans+=raw_max*raw;
col++;
b.pop_back();
}
}
printf("%lld",ans);
return 0;
}