现在有一块玻璃,是长方形的(w 毫米× h 毫米),现在要对他进行切割。
切割的方向有两种,横向和纵向。每一次切割之后就会有若干块玻璃被分成两块更小的玻璃。在切割之后玻璃不会被移动。
现在想知道每次切割之后面积最大的一块玻璃是多少。
样例解释:
对于第四次切割,下面四块玻璃的面积是一样大的。都是2。
输入
单组测试数据。
第一行有三个整数 w,h,n (2≤w,h≤200000, 1≤n≤200000),表示玻璃在横向上长w 毫米,纵向上长h 毫米,接下来有n次的切割。
接下来有n行输入,每一行描述一次切割。
输入的格式是H y 或 V x。
H y表示横向切割,切割线距离下边缘y毫米(1≤y≤h-1)。
V x表示纵向切割,切割线距离左边缘x毫米(1≤x≤w-1)。
输入保证不会有两次切割是一样的。
输出
对于每一次切割,输出所有玻璃中面积最大的是多少。
输入样例
样例输入1
4 3 4
H 2
V 2
V 3
V 1
输出样例
样例输出1
8
4
4
2
倒过来处理,先把线都存好,每次切割的一条线就相当是把这条线删除,更新最大值即可
#include<bits/stdc++.h>g
using namespace std;
#define ll long long
struct node{
char s;
int t;
}a[200010];
struct no{
int l,r;
ll val;
}H[200010],W[200010];
ll fx[200010],fy[200010];
ll ans[200010];
int main()
{
ios::sync_with_stdio(false);
int w,h,n,pre=0;
ll bx,by;
cin>>w>>h>>n;