Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- #include <ctype.h>
- #include <time.h>
- #pragma warning(disable:4996 6031)
- long long A1[200010] = { 0 };
- long long E1[200010] = { 0 };
- long long A2[200010] = { 0 };
- long long E2[200010] = { 0 };
- long long A[200010] = { 0 };
- long long E[200010] = { 0 };
- int main(){
- int t, n, m, p, q, i, j;
- scanf("%d", &t);
- while(t--){
- scanf("%d", &n);
- for(i = n; i >= 1; i--){
- scanf("%lld", A1 + i);
- }
- for(i = n; i >= 1; i--){
- scanf("%lld", E1 + i);
- }
- scanf("%d", &m);
- for(i = m; i >= 1; i--){
- scanf("%lld", A2 + i);
- }
- for(i = m; i >= 1; i--){
- scanf("%lld", E2 + i);
- }
- p = 1; q = 1; j = 1;
- while(p <= n || q <= m){
- //指数大的先输出 保证有东西
- if((p <= n && q <= m && E1[p] > E2[q]) || q > m){
- //第一个的指数更大
- //第二个处理完了
- //printf("%lld %lld ", A1[p], E1[p]); p++;
- A[j] = A1[p]; E[j] = E1[p];
- p++; j++;
- }
- else if((p <= n && q <= m && E1[p] < E2[q]) || p > n){
- //第二个的指数更大
- //第一个处理完了
- //printf("%lld %lld ", A2[q], E2[q]); q++;
- A[j] = A2[q]; E[j] = E2[q];
- q++; j++;
- }
- else{
- //两个都没处理完
- if(A1[p] + A2[q]){
- //printf("%lld %lld ", A1[p] + A2[q], E2[q]);
- A[j] = A1[p] + A2[q];
- E[j] = E2[q];
- j++;
- }
- p++; q++;
- }
- }
- printf("%d\n", j - 1);
- for(i = j - 1; i >= 1; i--)
- {
- printf("%lld ", A[i]);
- }
- putchar('\n');
- for(i = j - 1; i >= 1; i--){
- printf("%lld ", E[i]);
- }
- putchar('\n');
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement