当前位置: 代码迷 >> 综合 >> Uva-10020 (Minimal coverage)
  详细解决方案

Uva-10020 (Minimal coverage)

热度:85   发布时间:2023-11-23 12:54:04.0
题目链接: https://vjudge.net/problem/UVA-10020
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;struct _Node{int left;int right;
};
bool cmp(_Node rhs1, _Node rhs2)
{return rhs1.left < rhs2.left;
}
const int MAXN = 100000 + 1;
_Node arr[MAXN];
int ans[MAXN];
int pad[MAXN];int main()
{int t;cin >> t;while(t--){int key, l, r, cnt = 0, num = 0, k = 0;cin >> key;while(cin >> l >> r){if(l == 0 && r == 0) break;arr[cnt].left = l;arr[cnt].right = r;cnt ++;}sort(arr, arr + cnt, cmp);while (k < key) {int temp = k;for (int i = 0; i < cnt; i++)if (arr[i].left <= k && arr[i].right > temp) {temp = arr[i].right;ans[num] = i;}if (temp == k) {num = 0;break;}k = temp;num++;}printf("%d\n", num);for(int i = 0; i < num; ++i) printf("%d %d\n", arr[ans[i]].left, arr[ans[i]].right);cout << endl;}
}
  相关解决方案