【bzoj4143】[AMPPZ2014]The Lawyer
2015-10-06 20:41
399 查看
这是noip–难度吧。。。。。
把第i天的所有左端点排序,然后upper_bound右端点就行了。
唔。。。。。。。。。。
把第i天的所有左端点排序,然后upper_bound右端点就行了。
唔。。。。。。。。。。
[code]#include <bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<=b;i++) #define per(i,a,b) for(int i=a;i>=b;i--) #define pii pair<int , int> #define mp make_pair inline int rd() { char c = getchar(); while (!isdigit(c)) c = getchar() ; int x = c - '0'; while (isdigit(c = getchar())) x = x * 10 + c - '0'; return x; } const int maxn = 500005; set<pii> S[21]; int a[maxn] , b[maxn] , d[maxn] , vis[21] , m , n; pii ans[21]; void input() { n = rd() , m = rd(); rep(i , 1 , n) { a[i] = rd() , b[i] = rd() , d[i] = rd(); S[d[i]].insert(mp(a[i] , i)); } } void solve() { rep(i , 1 , n) if (!vis[d[i]]) { set<pii>::iterator iter = S[d[i]].upper_bound(mp(b[i] , n + 1)); if (iter == S[d[i]].end()) continue; ans[d[i]].first = iter -> second , ans[d[i]].second = i; vis[d[i]] = 1; } rep(i , 1 , m) if (vis[i]) printf("TAK %d %d\n" , ans[i].first , ans[i].second); else puts("NIE"); } int main() { #ifndef ONLINE_JUDGE // freopen("data.txt" , "r" , stdin); #endif input(); solve(); return 0; }
相关文章推荐
- 带最小值操作的栈
- 【收藏】取色工具 colorcop
- 【BZOJ3609】 【Heoi2014】人人尽说江南好【贪心】
- stl set
- 进程间通信机制
- Java 使用Axis 开发WebService 客户端
- 菜鸟学数据库(一)——三范式
- Move Zeroes | leetcode 283 【Java解题报告】
- Codeforces Round #323 (Div. 2) 解题报告
- LayoutInflater类详解
- (转)菜鸟学数据库(一)——三范式
- Hbase笔记六:Hbase和传统关系型数据库
- C#与JAVA学习感悟
- 个人博客作业Week 3 ——微软必应词典客户端
- 共用体,枚举,typedef
- Hbase笔记五:Hbase和Hive
- C++之递归函数的参数传递问题
- UML类图几种关系的总结
- C++类模板实例
- split命令使用详解