• Source
    1. #include <stdio.h>
    2. void qsort(int arr[],int left, int right){
    3. int i=left; int j =right;
    4. int tmp;
    5. int pivot = arr[(left+right)/2];
    6. while(i <= j){
    7. while(arr[i]<pivot) {
    8. i++;
    9. }
    10. while(arr[j]>pivot){
    11. j--;
    12. }
    13. if(i <= j){
    14. tmp = arr[i];
    15. arr[i] = arr[j];
    16. arr[j] = tmp;
    17. i++;
    18. j--;
    19. }
    20. }
    21. if(i < right){
    22. qsort(arr,i,right);
    23. }
    24. if(left < j){
    25. qsort(arr,left,j);
    26. }
    27. }
    28. void cpy(int arr1[],int arr2[],int N){
    29. for(int i=0; i<N; i++){
    30. arr1[i]= arr2[i];
    31. //printf("%d ",arr1[i]);
    32. }
    33. //printf("\n");
    34. }
    35. void qsortseq(int arr[],int left, int right,int seq[]){
    36. int i=left; int j =right;
    37. int tmp;
    38. int stmp;
    39. int pivot = arr[(left+right)/2];
    40. while(i <= j){
    41. while(arr[i]>pivot) {
    42. i++;
    43. }
    44. while(arr[j]<pivot){
    45. j--;
    46. }
    47. if(i <= j){
    48. tmp = arr[i];
    49. stmp = seq[i];
    50. arr[i] = arr[j];
    51. seq[i] = seq[j];
    52. arr[j] = tmp;
    53. seq[j] = stmp;
    54. i++;
    55. j--;
    56. }
    57. }
    58. if(i < right){
    59. qsortseq(arr,i,right,seq);
    60. }
    61. if(left < j){
    62. qsortseq(arr,left,j,seq);
    63. }
    64. }
    65. int main(void) {
    66. int N;
    67. scanf("%d",&N);
    68. int A[51];
    69. int B[51];
    70. int C[51];
    71. for(int i=0; i<N; ++i){
    72. scanf("%d",&A[i]);
    73. // printf("%d ",A[i]);
    74. }
    75. //printf("\n");
    76. for(int i=0; i<N; ++i){
    77. scanf("%d",&B[i]);
    78. // printf("%d ",B[i]);
    79. }
    80. qsort(A,0,N-1);
    81.  
    82. int seq[51];
    83. for(int i=0; i<N; ++i){
    84. seq[i]=i;
    85. // printf("%d ",seq[i]);
    86. }
    87. //printf("\n");
    88. cpy(C,B,N);
    89. qsortseq(C,0,N-1,seq);
    90.  
    91.  
    92. int sum=0;
    93. for(int i=0; i<N; i++){
    94. int tmp = A[i]*B[seq[i]];
    95. //printf("%dx%d=%d\n",A[i],B[seq[i]],tmp);
    96. sum += tmp;
    97. }
    98. printf("%d",sum);
    99.  
    100.  
    101. return 0;
    102. }
    103.