Advertisement
wojiaocbj

Untitled

Apr 1st, 2023
790
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.89 KB | None | 0 0
  1. /*
  2.  Author: 曹北健(37509)
  3.  Result: AC Submission_id: 5311061
  4.  Created at: Sat Apr 01 2023 19:07:24 GMT+0800 (China Standard Time)
  5.  Problem: 6794  Time: 835   Memory: 7100
  6. */
  7.  
  8. /*
  9.  Author: 刘书琦(63370)
  10.  Result: PE Submission_id: 5311018
  11.  Created at: Sat Apr 01 2023 19:03:12 GMT+0800 (China Standard Time)
  12.  Problem: 6794  Time: 494   Memory: 7176
  13. */
  14.  
  15. #include <stdio.h>
  16.  
  17. long long a[100000],A[100000],b[100000],B[100000],c[200000],C[200000];
  18.  
  19. int main()
  20. {
  21.     int t,n,m,i,j;
  22.     scanf("%d",&t);
  23.     while(t--){
  24.         scanf("%d",&n);
  25.         for(i=0;i<n;i++){
  26.             scanf("%lld",&a[i]);
  27.         }
  28.         for(i=0;i<n;i++){
  29.             scanf("%lld",&A[i]);
  30.         }
  31.         scanf("%d",&m);
  32.         for(i=0;i<m;i++){
  33.             scanf("%lld",&b[i]);
  34.         }
  35.         for(i=0;i<m;i++){
  36.             scanf("%lld",&B[i]);
  37.         }
  38.        
  39.         int cnt=0;
  40.         for(i=0,j=0;i<n&&j<m;){
  41.             if(A[i]<B[j]){
  42.                 C[cnt]=A[i];
  43.                 c[cnt]=a[i];
  44.                 cnt++;
  45.                 i++;
  46.                 while(A[i-1]==A[i]){
  47.                     c[cnt]+=a[i];
  48.                     i++;
  49.                 }
  50.             }else if(A[i]==B[j]){
  51.                 C[cnt]=A[i];
  52.                 c[cnt]=a[i]+b[j];
  53.                 cnt++;
  54.                 i++;
  55.                 j++;
  56.                 while(A[i-1]==A[i]){
  57.                     c[cnt]+=a[i];
  58.                     i++;
  59.                 }
  60.                 while(B[j-1]==B[j]){
  61.                     c[cnt]+=b[j];
  62.                     j++;
  63.                 }
  64.             }else if(A[i]>B[j]){
  65.                 C[cnt]=B[j];
  66.                 c[cnt]=b[j];
  67.                 cnt++;
  68.                 j++;
  69.                 while(B[j-1]==B[j]){
  70.                     c[cnt]+=b[j];
  71.                     j++;
  72.                 }
  73.             }
  74.             if(0==c[cnt-1]) cnt--;
  75.         }
  76.         while(i<n){
  77.             C[cnt]=A[i];
  78.             c[cnt]=a[i];
  79.             cnt++;
  80.             i++;
  81.             while(A[i-1]==A[i]){
  82.                     c[cnt]+=a[i];
  83.                     i++;
  84.                 }
  85.             if(0==c[cnt-1]){
  86.                 cnt--;
  87.             }
  88.         }
  89.         while(j<n){
  90.             C[cnt]=B[j];
  91.             c[cnt]=b[j];
  92.             cnt++;
  93.             j++;
  94.             while(B[j-1]==B[j]){
  95.                     c[cnt]+=b[j];
  96.                     j++;
  97.                 }
  98.             if(0==c[cnt-1]){
  99.                 cnt--;
  100.             }
  101.         }
  102.        
  103.         printf("%d \n",cnt);
  104.         for(i=0;i<cnt;i++){
  105.             printf("%lld ",c[i]);
  106.         }
  107.         printf("\n");
  108.         for(i=0;i<cnt;i++){
  109.             printf("%lld ",C[i]);
  110.             //if(i<cnt-1)   printf(" ");
  111.         }
  112. printf("\n");
  113.     }
  114.     return 0;
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement