Description
n n n支队伍一共参加了三场比赛。
一支队伍 x x x认为自己比另一支队伍 y y y强当且仅当 x x x在至少一场比赛中比 y y y的排名高。
求有多少组 ( x , y ) (x,y) (x,y),使得 x x x自己觉得比 y y y强, y y y自己也觉得比 x x x强。
$ (x, y), (y, x)$算一组。
Input
第一行一个整数 n n n,表示队伍数; 接下来 n n n行,每行三个整数 a [ i ] , b [ i ] , c [ i ] a[i], b[i], c[i] a[i],b[i],c[i],分别表示 i i i在第一场、第二场和第三场比赛中的名次; n n n 最大不超过 200000 200000 200000
Output
输出一个整数表示满足条件的 ( x , y ) (x,y) (x,y)数; 64 b i t 64bit 64bit请用 l l d lld lld
Sample Input
4
1 3 1
2 2 4
4 1 2
3 4 3
Sample Output
5
Solution
( x , y ) (x,y) (x,y)之间必然是 x x x两败一胜或两胜一败,考虑因 a , b , c a,b,c a,b,c其中之一败因 a , b , c a,b,c a,b,c其中另一胜的二元组个数之和(即二元组逆序对个数),那么一组合法解 ( x , y ) (x,y) (x,y)会被计算四次,所求答案除以四即为答案,时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn)
Code
#include
#include
#include
#include
#include
#include
#include
#include