306087: CF1144D. Equalize Them All
Memory Limit:256 MB
Time Limit:2 S
Judge Style:Text Compare
Creator:
Submit:0
Solved:0
Description
Equalize Them All
题意翻译
**题目描述** 你被给了一个 _n_ 个元素的数组 _a_ ,对于一对(i,j)其满足|i-j|=1(即表示i,j相邻),你现在有两种操作方式: **1**操作:将a[i]变为a[i] + | a[i]-a[j] | **2**操作:将a[i]变为a[i] - | a[i]-a[j] | (其中 | a[i]-a[j] | 表示a[i]-a[j]的绝对值,举例:|-4|=4,|3|=3)。 你的任务是求出最小的操作次数使整个数组的值全部相等并把每一步输出出来。 数据保证总用方法使其经过若干次操作后全部相等 保证任意一次操作后数之都不会超过10^18 **输入格式** 第一行有一个整数 _n_ 第二行包括 _n_ 个整数依次是 _a1,a2,a3,a4……an_ , _a_ 数组跟题目描述的一样 **输出格式** 第一行一个整数k——完成题目要求所需的最小操作次数 接下来k行输出每一步所作的操作,每一行有三个整数(t,i,p)分别对应做的操作的编号(即1或2),i,j,与题目中描述的操作里的i,j意思一样,而且同样满足1<=i,j<=n,| i-j |=1。 请看样例数据来对题意理解更深 如果有多组解你可以输出任意一组题目描述
You are given an array $ a $ consisting of $ n $ integers. You can perform the following operations arbitrary number of times (possibly, zero): 1. Choose a pair of indices $ (i, j) $ such that $ |i-j|=1 $ (indices $ i $ and $ j $ are adjacent) and set $ a_i := a_i + |a_i - a_j| $ ; 2. Choose a pair of indices $ (i, j) $ such that $ |i-j|=1 $ (indices $ i $ and $ j $ are adjacent) and set $ a_i := a_i - |a_i - a_j| $ . The value $ |x| $ means the absolute value of $ x $ . For example, $ |4| = 4 $ , $ |-3| = 3 $ . Your task is to find the minimum number of operations required to obtain the array of equal elements and print the order of operations to do it. It is guaranteed that you always can obtain the array of equal elements using such operations. Note that after each operation each element of the current array should not exceed $ 10^{18} $ by absolute value.输入输出格式
输入格式
The first line of the input contains one integer $ n $ ( $ 1 \le n \le 2 \cdot 10^5 $ ) — the number of elements in $ a $ . The second line of the input contains $ n $ integers $ a_1, a_2, \dots, a_n $ ( $ 0 \le a_i \le 2 \cdot 10^5 $ ), where $ a_i $ is the $ i $ -th element of $ a $ .
输出格式
In the first line print one integer $ k $ — the minimum number of operations required to obtain the array of equal elements. In the next $ k $ lines print operations itself. The $ p $ -th operation should be printed as a triple of integers $ (t_p, i_p, j_p) $ , where $ t_p $ is either $ 1 $ or $ 2 $ ( $ 1 $ means that you perform the operation of the first type, and $ 2 $ means that you perform the operation of the second type), and $ i_p $ and $ j_p $ are indices of adjacent elements of the array such that $ 1 \le i_p, j_p \le n $ , $ |i_p - j_p| = 1 $ . See the examples for better understanding. Note that after each operation each element of the current array should not exceed $ 10^{18} $ by absolute value. If there are many possible answers, you can print any.
输入输出样例
输入样例 #1
5
2 4 6 6 6
输出样例 #1
2
1 2 3
1 1 2
输入样例 #2
3
2 8 10
输出样例 #2
2
2 2 1
2 3 2
输入样例 #3
4
1 1 1 1
输出样例 #3
0