Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define FOR(i,a,b) for(auto i=a; i!=b+1-2*(a>b); i+=1-2*(a>b))
- #define REP(i,a,b) for(auto i=a-(a>b); i!=b-(a>b); i+=1-2*(a>b))
- #define ALL(v) v.begin(),v.end()
- #define what_is(x) cout<<#x<<" is "<<x<<endl;
- #define min3(a,b,c) min(min(a,b),c)
- #define max3(a,b,c) max(max(a,b),c)
- #define SIZE 1000005
- #define MAXN 1000000007
- #define PI 3.141592653589793
- #define open_read1 freopen("C:\\Users\\Hepic\\Desktop\\a.txt","r",stdin)
- #define open_write1 freopen("C:\\Users\\Hepic\\Desktop\\b.txt","w",stdout)
- #define open_read freopen("msched.in","r",stdin)
- #define open_write freopen("msched.out","w",stdout)
- using namespace std;
- typedef long long LL;
- typedef pair<int,int> PII;
- int W,H,N,num;
- char ch;
- multiset<int> maxHorSize,maxVertSize;
- set<int> horiz,vert;
- LL max_area;
- LL find_max(set<int> setCut, char cut)
- {
- auto med=setCut.find(num);
- auto big=med;
- auto sml=med;
- ++big; --sml;
- if(cut=='h')
- {
- maxHorSize.erase(maxHorSize.find(*big-*sml));
- maxHorSize.insert(*med-*sml);
- maxHorSize.insert(*big-*med);
- }
- else if(cut=='v')
- {
- maxVertSize.erase(maxVertSize.find(*big-*sml));
- maxVertSize.insert(*med-*sml);
- maxVertSize.insert(*big-*med);
- }
- return (LL)(*maxHorSize.rbegin()) * (LL)(*maxVertSize.rbegin());
- }
- int main()
- {
- scanf("%d%d%d",&W,&H,&N);
- horiz = {0,H};
- vert = {0,W};
- maxHorSize = {H};
- maxVertSize = {W};
- FOR(i,1,N)
- {
- cin>>ch>>num;
- if(ch=='H')
- {
- horiz.insert(num);
- max_area = find_max(horiz, 'h');
- }
- else if(ch=='V')
- {
- vert.insert(num);
- max_area = find_max(vert, 'v');
- }
- printf("%I64d\n",max_area);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement