#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
using namespace std;
#define maxn 100000 + 10
struct Node
{
int l, r;
int len;
} node[maxn];
int ans[maxn];
int cmp ( Node a, Node b)
{
if(a.l != b.l )
return a.l < b.l;
}
int main()
{
int t, l, r, m ,cnt ,anum;
scanf("%d",&t);
while(t--)
{
cnt = 0, anum = 0;
scanf("%d",&m);
memset(ans, 0, sizeof(ans));
while(scanf("%d %d",&l, &r) && ( l + r))
{
node[cnt].l = l;
node[cnt++].r = r;
}
sort(node, node + cnt, cmp);
int L = 0, R = 0;
while(L < m)
{
for( int i = 0 ; i <cnt; i++)
{
if(node[i].l <= L && node[i].r >= R)
{
R = node[i].r;
ans[anum] = i;
}
if(node[i].l > R)
break;
}
if(R == L)
{
anum = 0;
break;
}
L = R;
anum++;
}
printf("%d\n",anum);
for( int i = 0; i < anum; i++)
{
printf("%d %d\n",node[ans[i]].l, node[ans[i]].r);
}
if(t)
printf("\n");
}
return 0;
}
UVA 10020
最新推荐文章于 2019-05-24 23:08:48 发布