Advertisement
wojiaocbj

Untitled

Apr 3rd, 2023
949
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.08 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5. #include <ctype.h>
  6. #include <time.h>
  7. #pragma warning(disable:4996 6031)
  8. long long A1[200010] = { 0 };
  9. long long E1[200010] = { 0 };
  10. long long A2[200010] = { 0 };
  11. long long E2[200010] = { 0 };
  12. long long A[200010] = { 0 };
  13. long long E[200010] = { 0 };
  14. int main(){
  15.     int t, n, m, p, q, i, j;
  16.     scanf("%d", &t);
  17.     while(t--){
  18.         scanf("%d", &n);
  19.         for(i = n; i >= 1; i--){
  20.             scanf("%lld", A1 + i);
  21.         }
  22.         for(i = n; i >= 1; i--){
  23.             scanf("%lld", E1 + i);
  24.         }
  25.         scanf("%d", &m);
  26.         for(i = m; i >= 1; i--){
  27.             scanf("%lld", A2 + i);
  28.         }
  29.         for(i = m; i >= 1; i--){
  30.             scanf("%lld", E2 + i);
  31.         }
  32.         p = 1; q = 1; j = 1;
  33.         while(p <= n || q <= m){
  34.             //指数大的先输出 保证有东西
  35.             if((p <= n && q <= m && E1[p] > E2[q]) || q > m){
  36.                 //第一个的指数更大
  37.                 //第二个处理完了
  38.                 //printf("%lld %lld ", A1[p], E1[p]); p++;
  39.                 A[j] = A1[p]; E[j] = E1[p];
  40.                 p++; j++;
  41.             }
  42.             else if((p <= n && q <= m && E1[p] < E2[q]) || p > n){
  43.                 //第二个的指数更大
  44.                 //第一个处理完了
  45.                 //printf("%lld %lld ", A2[q], E2[q]); q++;
  46.                 A[j] = A2[q]; E[j] = E2[q];
  47.                 q++; j++;
  48.             }
  49.             else{
  50.                 //两个都没处理完
  51.                 if(A1[p] + A2[q]){
  52.                     //printf("%lld %lld ", A1[p] + A2[q], E2[q]);
  53.                     A[j] = A1[p] + A2[q];
  54.                     E[j] = E2[q];
  55.                     j++;
  56.                 }
  57.                 p++; q++;
  58.             }
  59.         }
  60.         printf("%d\n", j - 1);
  61.         for(i = j - 1; i >= 1; i--)
  62.         {
  63.             printf("%lld ", A[i]);
  64.         }
  65.         putchar('\n');
  66.         for(i = j - 1; i >= 1; i--){
  67.             printf("%lld ", E[i]);
  68.         }
  69.         putchar('\n');
  70.     }
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement