Advertisement
Guest User

Untitled

a guest
Mar 19th, 2015
547
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.85 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. #define FOR(i,a,b) for(auto i=a; i!=b+1-2*(a>b); i+=1-2*(a>b))
  4. #define REP(i,a,b) for(auto i=a-(a>b); i!=b-(a>b); i+=1-2*(a>b))
  5. #define ALL(v) v.begin(),v.end()
  6. #define what_is(x) cout<<#x<<" is "<<x<<endl;
  7. #define min3(a,b,c) min(min(a,b),c)
  8. #define max3(a,b,c) max(max(a,b),c)
  9. #define SIZE 1000005
  10. #define MAXN 1000000007
  11. #define PI 3.141592653589793
  12. #define open_read1 freopen("C:\\Users\\Hepic\\Desktop\\a.txt","r",stdin)
  13. #define open_write1 freopen("C:\\Users\\Hepic\\Desktop\\b.txt","w",stdout)
  14. #define open_read freopen("msched.in","r",stdin)
  15. #define open_write freopen("msched.out","w",stdout)
  16.  
  17. using namespace std;
  18.  
  19.  
  20. typedef long long LL;
  21. typedef pair<int,int> PII;
  22.  
  23.  
  24. int W,H,N,num;
  25. char ch;
  26. multiset<int> maxHorSize,maxVertSize;
  27. set<int> horiz,vert;
  28. LL max_area;
  29.  
  30.  
  31. LL find_max(set<int> setCut, char cut)
  32. {
  33.     auto med=setCut.find(num);
  34.     auto big=med;
  35.     auto sml=med;
  36.  
  37.     ++big; --sml;
  38.  
  39.  
  40.     if(cut=='h')
  41.     {
  42.         maxHorSize.erase(maxHorSize.find(*big-*sml));
  43.         maxHorSize.insert(*med-*sml);
  44.         maxHorSize.insert(*big-*med);
  45.     }
  46.  
  47.     else if(cut=='v')
  48.     {
  49.         maxVertSize.erase(maxVertSize.find(*big-*sml));
  50.         maxVertSize.insert(*med-*sml);
  51.         maxVertSize.insert(*big-*med);
  52.     }
  53.  
  54.  
  55.     return (LL)(*maxHorSize.rbegin()) * (LL)(*maxVertSize.rbegin());
  56. }
  57.  
  58.  
  59.  
  60. int main()
  61. {
  62.     scanf("%d%d%d",&W,&H,&N);
  63.  
  64.  
  65.     horiz = {0,H};
  66.     vert = {0,W};
  67.     maxHorSize = {H};
  68.     maxVertSize = {W};
  69.  
  70.  
  71.     FOR(i,1,N)
  72.     {
  73.         cin>>ch>>num;
  74.  
  75.  
  76.         if(ch=='H')
  77.         {
  78.             horiz.insert(num);
  79.             max_area = find_max(horiz, 'h');
  80.         }
  81.  
  82.         else if(ch=='V')
  83.         {
  84.             vert.insert(num);
  85.             max_area = find_max(vert, 'v');
  86.         }
  87.  
  88.  
  89.         printf("%I64d\n",max_area);
  90.     }
  91.  
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement