Advertisement
wojiaocbj

Untitled

Apr 2nd, 2023
672
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.50 KB | None | 0 0
  1. /*
  2.  Author: 曹北健(37509)
  3.  Result: AC Submission_id: 5295661
  4.  Created at: Thu Mar 30 2023 14:10:23 GMT+0800 (China Standard Time)
  5.  Problem: 6794  Time: 834   Memory: 7104
  6. */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include <math.h>
  12. #include <ctype.h>
  13. #include <time.h>
  14. #pragma warning(disable:4996 6031)
  15. long long A1[200010] = { 0 };
  16. long long E1[200010] = { 0 };
  17. long long A2[200010] = { 0 };
  18. long long E2[200010] = { 0 };
  19. long long A[200010] = { 0 };
  20. long long E[200010] = { 0 };
  21. int main(){
  22. #ifdef _DEBUG
  23.     freopen("../../input.txt", "r", stdin);
  24.     //freopen("output.txt", "w", stdout);
  25. #endif // _DEBUG
  26.     int t, n, m, p, q, i, j;
  27.     scanf("%d", &t);
  28.     while(t--){
  29.         scanf("%d", &n);
  30.         for(i = n; i >= 1; i--){
  31.             scanf("%lld", A1 + i);
  32.         }
  33.         for(i = n; i >= 1; i--){
  34.             scanf("%lld", E1 + i);
  35.         }
  36.         scanf("%d", &m);
  37.         for(i = m; i >= 1; i--){
  38.             scanf("%lld", A2 + i);
  39.         }
  40.         for(i = m; i >= 1; i--){
  41.             scanf("%lld", E2 + i);
  42.         }
  43.         p = 1; q = 1; j = 1;
  44.         while(p <= n || q <= m){
  45.             //指数大的先输出 保证有东西
  46.             if((p <= n && q <= m && E1[p] > E2[q]) || q > m){
  47.                 //第一个的指数更大
  48.                 //第二个处理完了
  49.                 //printf("%lld %lld ", A1[p], E1[p]); p++;
  50.                 A[j] = A1[p]; E[j] = E1[p];
  51.                 p++; j++;
  52.             }
  53.             else if((p <= n && q <= m && E1[p] < E2[q]) || p > n){
  54.                 //第二个的指数更大
  55.                 //第一个处理完了
  56.                 //printf("%lld %lld ", A2[q], E2[q]); q++;
  57.                 A[j] = A2[q]; E[j] = E2[q];
  58.                 q++; j++;
  59.             }
  60.             else{
  61.                 //两个都没处理完
  62.                 if(A1[p] + A2[q]){
  63.                     //printf("%lld %lld ", A1[p] + A2[q], E2[q]);
  64.                     A[j] = A1[p] + A2[q];
  65.                     E[j] = E2[q];
  66.                     j++;
  67.                 }
  68.                 p++; q++;
  69.             }
  70.         }
  71.         printf("%d\n", j - 1);
  72.         for(i = j - 1; i >= 1; i--)
  73.         {
  74.             printf("%lld ", A[i]);
  75.         }
  76.         putchar('\n');
  77.         for(i = j - 1; i >= 1; i--){
  78.             printf("%lld ", E[i]);
  79.         }
  80.         putchar('\n');
  81.     }
  82. #ifdef _DEBUG
  83.     freopen("CON", "r", stdin);
  84.     //freopen("CON", "w", stdout);
  85.     system("pause");
  86. #endif // _DEBUG
  87.     return 0;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement