fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7. int n,nn,i,j,sum, k, m[11],w[11],x;
  8. setvbuf(stdin,(char*)NULL, _IOFBF,0);
  9.  
  10. char buf[1000000], *p = buf;
  11. fread(buf, 1, 1000000, stdin);
  12. n = atoi(p);
  13. while(*p != '\n') p++ ;
  14. p++;
  15. while(n--) {
  16.  
  17. nn = atoi(p);
  18. while(*p != '\n') p++ ;
  19. p++;
  20. sum=0;
  21. memset(m,0,sizeof(m));
  22. memset(w,0,sizeof(w));
  23.  
  24. for(i=0; i<nn; i++) {
  25. k = atoi(p);
  26. while(*p != ' ' && *p != '\n') p++ ;
  27. p++;
  28. m[k]++;
  29. }
  30. for(i=0; i<nn; i++) {
  31. k = atoi(p);
  32. while(*p != ' ' && *p != '\n') p++ ;
  33. p++;
  34. w[k]++;
  35. }
  36. i=0;
  37. j=i;
  38.  
  39. while(1)
  40. {
  41. while(i<11 && !m[i])i++;
  42. if(!(i^11))break;
  43. while(j<11 && !w[j])j++;
  44. if(!(j^11))break;
  45. if(m[i]>=w[j]) {
  46. x = (i*j);
  47. sum+=(x*w[j]);
  48. m[i]-=w[j];
  49. w[j]=0;
  50. }
  51. else
  52. {
  53. x = (i*j);
  54. sum+=(x*m[i]);
  55. w[j]-=m[i];
  56. m[i]=0;
  57. }
  58. }
  59. printf("%d\n",sum);
  60. }
  61. return 0;
  62. }
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
stdin
2
2
1 1
3 2
3
2 3 2
1 3 2
compilation info
prog.c: In function ‘main’:
prog.c:21: warning: implicit declaration of function ‘memset’
prog.c:21: warning: incompatible implicit declaration of built-in function ‘memset’
prog.c:11: warning: ignoring return value of ‘fread’, declared with attribute warn_unused_result
stdout
5
15