hdu 3627
来源:互联网 发布:2017上半年理财数据 编辑:程序博客网 时间:2024/05/29 13:39
线段树?这题目明显坑爹,哪有这种线段树!!真无聊,map + set 秒掉~
#include<iostream>#include<vector>#include<algorithm>#include<cstdio>#include<string>#include<map>#include<set>#include<cstring>using namespace std;map<int,set<int> > m;map<int,set<int> >::iterator mi;set<int>::iterator si;set<int>s;map<int,int>yy;int n;int tx,ty;char c[11];int temp,t2;int tt;int main(){ int cas=1; while(cin>>n) { if(n==0) { break; } if(cas!=1) { cout<<endl; } printf("Case %d:\n",cas++); m.clear(); s.clear(); yy.clear(); for(int i=1;i<=n;i++) { scanf("%s",c); scanf("%d%d",&tx,&ty); if(c[0]=='a') { if(yy.find(ty) == yy.end()) { yy[ty] = 1; } else { yy[ty]++; } if(s.find(tx)==s.end()) { s.insert(tx); } mi = m.find(tx); if(mi != m.end()) { si = mi -> second.find(ty); if(si!=mi -> second.end()) { continue; } else { mi->second.insert(ty); } } else { m[tx].insert(ty); } } else if(c[0]=='f') { if(yy.upper_bound(ty) == yy.end()) { printf("-1\n"); continue; } tt = tx; while(true) { if(s.empty()) { printf("-1\n"); break; } si = s.upper_bound(tt); if(si!=s.end()) { temp = *si; tt = temp; if(m[temp].empty()) { continue; } si = m[temp].upper_bound(ty); if(si != m[temp].end()) { t2 = *si; printf("%d %d\n",temp,t2); break; } else { continue; } } else { printf("-1\n"); break; } } } else if(c[0]=='r') { m[tx].erase(ty); if(m[tx].empty()) { s.erase(tx); } if(!--yy[ty]) { yy.erase(ty); } } } } return 0;}
- hdu 3627
- hdu 3627 Giant For
- hdu 3627 Giant For
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- 请高手指教,如何拦截浏览器的请求URL,并把URL中的参数保存起来
- [HDOJ 1008] Elevator (模拟题)
- 内存对齐
- Java类继承:父与子的恩恩怨怨
- ubuntu下用Eclipse搭建C++开发环境
- hdu 3627
- Windows Phone7 单元测试 NUnit
- c#中split用法大全
- linux下串口通信帖子汇总
- Windows程序的框架
- CString的堆错误 Heap block at
- VMFS volume generates the error
- c++ 类之间的相互调用问题
- 寻找ada语言爱好者