A sequence $a = [a_1, a_2, \ldots, a_l]$ of length $l$ has an ascent if there exists a pair of indices $(i, j)$ such that $1 \le i < j \le l$ and $a_i < a_j$. For example, the sequence $[0, 2, 0, 2, 0]$ has an ascent because of the pair $(1, 4)$, but the sequence $[4, 3, 3, 3, 1]$ doesn’t have an ascent.
Let’s call a concatenation of sequences $p$ and $q$ the sequence that is obtained by writing down sequences $p$ and $q$ one right after another without changing the order. For example, the concatenation of the $[0, 2, 0, 2, 0]$ and $[4, 3, 3, 3, 1]$ is the sequence $[0, 2, 0, 2, 0, 4, 3, 3, 3, 1]$. The concatenation of sequences $p$ and $q$ is denoted as $p+q$.
Gyeonggeun thinks that sequences with ascents bring luck. Therefore, he wants to make many such sequences for the new year. Gyeonggeun has $n$ sequences $s_1, s_2, \ldots, s_n$ which may have different lengths.
Gyeonggeun will consider all $n^2$ pairs of sequences $s_x$ and $s_y$ ($1 \le x, y \le n$), and will check if its concatenation $s_x + s_y$ has an ascent. Note that he may select the same sequence twice, and the order of selection matters.
Please count the number of pairs ($x, y$) of sequences $s_1, s_2, \ldots, s_n$ whose concatenation $s_x + s_y$ contains an ascent.Input
The first line contains the number $n$ ($1 \le n \le 100\,000$) denoting the number of sequences.
The next $n$ lines contain the number $l_i$ ($1 \le l_i$) denoting the length of $s_i$, followed by $l_i$ integers $s_{i, 1}, s_{i, 2}, \ldots, s_{i, l_i}$ ($0 \le s_{i, j} \le 10^6$) denoting the sequence $s_i$.
It is guaranteed that the sum of all $l_i$ does not exceed $100\,000$.Output
Print a single integer, the number of pairs of sequences whose concatenation has an ascent.Examplesinput
5 1 1 1 1 1 2 1 4 1 3
output
9
input
3 4 2 0 2 0 6 9 9 8 8 7 7 1 6
output
7
input
10 3 62 24 39 1 17 1 99 1 60 1 64 1 30 2 79 29 2 20 73 2 85 37 1 100
output
72
Note
For the first example, the following $9$ arrays have an ascent: $[1, 2], [1, 2], [1, 3], [1, 3], [1, 4], [1, 4], [2, 3], [2, 4], [3, 4]$. Arrays with the same contents are counted as their occurences.
Solution:
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
long long ans = (long long) n * n;
vector<pair<int, int>> a;
for (int i = 0; i < n; i++) {
int foo;
cin >> foo;
vector<int> b(foo);
for (int j = 0; j < foo; j++) {
cin >> b[j];
}
bool ok = true;
for (int j = 0; j < foo - 1; j++) {
ok &= b[j] >= b[j + 1];
}
if (ok) {
a.emplace_back(b[0], b.back());
}
}
vector<pair<int, int>> events;
for (auto& p : a) {
events.emplace_back(p.first, -1);
events.emplace_back(p.second, 1);
}
sort(events.begin(), events.end());
int balance = 0;
for (auto& p : events) {
if (p.second == -1) {
++balance;
} else {
ans -= balance;
}
}
cout << ans << '\n';
return 0;
}