Description:
Accept:
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long int LL;
LL t, len, numlen = 0;
struct Node {
LL l, r;
Node() {
l = 0, r = 0;
}
Node(LL ll, LL rr) {
l = ll, r = rr;
}
};
Node num[100010];
Node a[105];
bool cmp1(Node x, Node y) {
return x.l < y.l;
}
int main()
{
cin >> t;
while (t--) {
cin >> len;
numlen=0;
for (int i = 0; i < len; i++) {
cin >> a[i].l >> a[i].r;
}
sort(a, a + len, cmp1);
numlen++;
num[0].l = a[0].l;
num[0].r = a[0].r;
for (int i = 1; i < len; i++) {
int pos = -1, deep = INT_MAX;//第i个任务要放在哪个位置
for (int j = 0; j < numlen; j++) {
if (a[i].r <= num[j].l || a[i].l >= num[j].r) {//判断能不能放
if (deep > a[i].l - num[j].r) {
deep = a[i].l - num[j].r;
pos = j;
}
}
}
if (pos == -1) {
num[numlen].l = a[i].l;
num[numlen].r = a[i].r;
numlen++;
}
else {
num[pos].r = a[i].r;
}
}
LL result = 0;
cout << numlen << " ";
for (int j = 0; j < numlen; j++) {
result += num[j].r - num[j].l;
}
cout << result << endl;
}
return 0;
}