• Source
    1. /**************************************************************
    2.   Problem: 2430
    3.   User: zrts
    4.   Language: C++
    5.   Result: Accepted
    6.   Time:16 ms
    7.   Memory:1352 kb
    8. ****************************************************************/
    9.  
    10. #include<iostream>
    11. #include<cstdio>
    12. #include<algorithm>
    13. //by zrt
    14. //problem:
    15. using namespace std;
    16. inline int scan(){int tmp=0,sign=1;char x;while(((x=getchar())<'0'||x>'9')&&x!='-');if(x=='-') sign=-1;else tmp=x-'0';while((x=getchar())>='0'&&x<='9') tmp*=10,tmp+=x-'0';if(sign==1) return tmp;else return (-tmp);}
    17. int n,m;
    18. int a[10005],b[10005];
    19. int hang=1,lie=1;
    20. bool cmp(int a,int b){
    21. return a>b;
    22. }
    23. int ha,hb;
    24. long long ans;
    25. int main(){
    26. #ifdef LOCAL
    27. freopen("in.txt","r",stdin);
    28. freopen("out.txt","w",stdout);
    29. #endif
    30. scanf("%d%d",&n,&m);
    31. n--;m--;
    32. for(int i=0;i<n;i++){
    33. scanf("%d",&a[i]);
    34. }
    35. for(int i=0;i<m;i++){
    36. scanf("%d",&b[i]);
    37. }
    38. sort(a,a+n,cmp);sort(b,b+m,cmp);
    39. while(1){
    40. if(b[hb]>a[ha]){
    41. ans+=hang*b[hb];
    42. lie++;
    43. hb++;
    44. if(hb==m) break;
    45. }else{
    46. ans+=lie*a[ha];
    47. hang++;
    48. ha++;
    49. if(ha==n) break;
    50. }
    51. }
    52. for(;hb<m;hb++){
    53. ans+=hang*b[hb];
    54. // lie++;
    55. }
    56. for(;ha<n;ha++){
    57. ans+=lie*a[ha];
    58. // hang++;
    59. }
    60. printf("%lld\n",ans);
    61. return 0;
    62. }