Set 运用
来源:互联网 发布:电脑视频剪辑软件推荐 编辑:程序博客网 时间:2024/05/17 09:22
链接:http://codeforces.com/contest/527/problem/C
Leonid wants to become a glass carver (the person who creates beautiful artworks by cutting the glass). He already has a rectangular w mm × h mm sheet of glass, a diamond glass cutter and lots of enthusiasm. What he lacks is understanding of what to carve and how.
In order not to waste time, he decided to practice the technique of carving. To do this, he makes vertical and horizontal cuts through the entire sheet. This process results in making smaller rectangular fragments of glass. Leonid does not move the newly made glass fragments. In particular, a cut divides each fragment of glass that it goes through into smaller fragments.
After each cut Leonid tries to determine what area the largest of the currently available glass fragments has. Since there appear more and more fragments, this question takes him more and more time and distracts him from the fascinating process.
Leonid offers to divide the labor — he will cut glass, and you will calculate the area of the maximum fragment after each cut. Do you agree?
The first line contains three integers w, h, n (2 ≤ w, h ≤ 200 000, 1 ≤ n ≤ 200 000).
Next n lines contain the descriptions of the cuts. Each description has the form H y or V x. In the first case Leonid makes the horizontal cut at the distance y millimeters (1 ≤ y ≤ h - 1) from the lower edge of the original sheet of glass. In the second case Leonid makes a vertical cut at distance x (1 ≤ x ≤ w - 1) millimeters from the left edge of the original sheet of glass. It is guaranteed that Leonid won't make two identical cuts.
After each cut print on a single line the area of the maximum available glass fragment in mm2.
4 3 4H 2V 2V 3V 1
8442
7 6 5H 4V 3V 5H 2V 1
28161264
Picture for the first sample test:
涨姿势
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include<queue>#include<set>#include<map>#include<cmath>#define mst(ss,b) memset((ss),(b),sizeof(ss))#define maxn 0x3f3f3f3fusing namespace std;int h,w,n;int hi[200001],wi[200001];set <int > sh,sw;int main() { scanf("%d%d%d",&w,&h,&n); sw.insert(0); sw.insert(w); sh.insert(0); sh.insert(h); hi[h]++; hi[0]++; wi[w]++; wi[0]++; long long maxw=w,maxh=h; for(int i=1; i<=n; i++) { char c; int x; cin>>c>>x; set<int >::iterator left,right; if(c=='V') { sw.insert(x); left=right=sw.find(x); left--; right++; int l=*left; int r=*right; wi[r-l]--; wi[r-x]++; wi[x-l]++; } if(c=='H') { sh.insert(x); left=right=sh.find(x); left--; right++; int l=*left; int r=*right; hi[r-l]--; hi[r-x]++; hi[x-l]++; } while(hi[maxh]==0) maxh--; while(wi[maxw]==0) maxw--; cout<<maxh*maxw<<endl; } return 0;}
- SET运用
- Set 运用
- STL-set 简单运用示例
- 1032. Sharing (25) -set运用
- STL set容器 基本运用
- c++ map set综合运用
- STL set容器 基本运用
- UVA156 map与set运用
- Map 和 Set 的遍历运用
- HDU 5058 So easy(STL set运用)
- STL中set的相关运用
- python的dict、list、set学习运用
- 运用flex里面的set和get方法(简单例子)
- java--解决矩形排序(Set集合运用)
- codeforces #296 div2 (527C) STL中set的运用
- UVa12096 set map vector stack的综合运用
- HDU 5058 So easy(STL 集合set的运用)
- hdu 5249 KPI set与其迭代器的运用
- Protocol Buffer技术详解(C++实例)
- String源码分析
- java模式之策略模式&模板模式 以及策略模式与模板模式的区别
- 虚幻4的学习——TSubclassof 的用法
- Linux下网络流量实时监控工具大全
- Set 运用
- Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
- hdu 1811 ufset综合
- 经济学原理-读书笔记一
- 【Visual C++】游戏编程学习笔记之八:鼠标输入消息(小demo)
- socket编程的select模型
- ubuntu 14.04的安装
- Redis c API
- 懒散线段树