目录

CF1392B-Omkar and Infinity Clock

CF1392B-Omkar and Infinity Clock

题目:

题目描述:

Being stuck at home, Ray became extremely bored. To pass time, he asks Lord Omkar to use his time bending power: Infinity Clock! However, Lord Omkar will only listen to mortals who can solve the following problem:

You are given an array $ a $ of $ n $ integers. You are also given an integer $ k $ . Lord Omkar wants you to do $ k $ operations with this array.

Define one operation as the following:

  1. Set $ d $ to be the maximum value of your array.
  2. For every $ i $ from $ 1 $ to $ n $ , replace $ a_{i} $ with $ d-a_{i} $ .

The goal is to predict the contents in the array after $ k $ operations. Please help Ray determine what the final sequence will look like!

输入格式:

Each test contains multiple test cases. The first line contains the number of cases $ t $ ( $ 1 \le t \le 100 $ ). Description of the test cases follows.

The first line of each test case contains two integers $ n $ and $ k $ ( $ 1 \leq n \leq 2 \cdot 10^5, 1 \leq k \leq 10^{18} $ ) – the length of your array and the number of operations to perform.

The second line of each test case contains $ n $ integers $ a_{1},a_{2},…,a_{n} $ $ (-10^9 \leq a_{i} \leq 10^9) $ – the initial contents of your array.

It is guaranteed that the sum of $ n $ over all test cases does not exceed $ 2 \cdot 10^5 $ .

输出格式:

For each case, print the final version of array $ a $ after $ k $ operations described above.

样例:

样例输入1:

1
2
3
4
5
6
7
3
2 1
-199 192
5 19
5 -1 4 2 0
1 2
69

样例输出1:

1
2
3
391 0
0 6 1 3 5
0

思路:

实现:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "ybwhead/ios.h"
int TTT;
int n, k;
const int maxn = 2e5 + 10;
int a[maxn];
int main()
{
    yin >> TTT;
    while (TTT--)
    {
        yin >> n >> k;
        int mx = INT_MIN, mi = INT_MAX;
        for (int i = 1; i <= n; i++)
        {
            yin >> a[i];
            mx = max(mx, a[i]), mi = min(mi, a[i]);
        }
        // sort(a + 1, a + n + 1);
        if (k & 1)
        {
            for (int i = 1; i <= n; i++)
            {
                yout << mx - a[i] << " ";
            }
        }
        else
        {
            for (int i = 1; i <= n; i++)
            {
                yout << a[i] - mi << " ";
            }
        }
        yout << endl;
    }
}