Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.25 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <queue>
  4. #include <vector>
  5. #include <set>
  6. #include <map>
  7. #include <string>
  8. #include <cstring>
  9. #include <ctime>
  10. #include <utility>
  11. #include <cassert>
  12. #include <cmath>
  13. #include <algorithm>
  14.  
  15. #define F first
  16. #define S second
  17. #define mp make_pair
  18. #define pb push_back
  19. #define fname ""
  20.  
  21. using namespace std;
  22.  
  23. typedef long long LL;
  24. typedef pair <int, int> pii;
  25.  
  26. const int maxn = (int)700;
  27. const int inf = (int)2e9;
  28. const int mod = (int)1e9 + 7;
  29. const double eps = 1e-9;
  30.  
  31. map <int, int> wx, wy;
  32. int n, c1, c2, d1[maxn][maxn], d2[maxn][maxn], xl[maxn], yl[maxn], xr[maxn], yr[maxn], dx[maxn], dy[maxn], d[maxn][maxn], h, w;
  33. LL ans, cur;
  34.  
  35. int main() {
  36.   freopen(fname"input.txt", "r", stdin);
  37.   freopen(fname"output.txt", "w", stdout);
  38.  
  39.   ios_base::sync_with_stdio(false);
  40.   cin.tie(0);
  41.    
  42.     cin >> n;
  43.     for (int i = 1; i <= n; i++)
  44.     {
  45.         cin >> xl[i] >> yl[i] >> xr[i] >> yr[i];
  46.         dx[++c1] = xl[i];
  47.         dx[++c1] = xr[i];
  48.         dy[++c2] = yl[i];
  49.         dy[++c2] = yr[i];
  50.     }
  51.  
  52.     sort(dx + 1, dx + 1 + c1);
  53.     sort(dy + 1, dy + 1 + c2);
  54.  
  55.     for (int i = 1; i <= c1; i++)
  56.     {
  57.         if (!wx[dx[i]])
  58.             wx[dx[i]] = ++h;
  59.     }
  60.  
  61.     for (int i = 1; i <= c2; i++)
  62.     {
  63.         if (!wy[dy[i]])
  64.             wy[dy[i]] = ++w;
  65.     }
  66.  
  67.     for (int i = 1; i <= n; i++)
  68.     {
  69.         xl[0] = min(wx[xl[i]], wx[xr[i]]);
  70.         xr[0] = max(wx[xl[i]], wx[xr[i]]);
  71.        
  72.         yl[0] = min(wy[yl[i]], wy[yr[i]]);
  73.         yr[0] = max(wy[yl[i]], wy[yr[i]]);
  74.        
  75.         if (yl[0] == yr[0])
  76.             xl[0]++;
  77.         if (xl[0] == xr[0])
  78.             yl[0]++;
  79.  
  80.         for (int v = xl[0]; v <= xr[0]; v++)
  81.             for (int u = yl[0]; u <= yr[0]; u++)
  82.             {
  83.                 if (yl[i] != yr[i])
  84.                     d1[v][u] = 1;
  85.                 if (xl[i] != xr[i])
  86.                     d2[v][u] = 1;
  87.             }
  88.     }
  89.    
  90.     for (int i = 1; i <= h; i++)
  91.     {
  92.         for (int j = 1; j <= w; j++)
  93.             cout << d2[i][j] << " ";
  94.         cout << endl;
  95.     }
  96.  
  97.     for (int i = 1; i <= h; i++)
  98.     {
  99.         for (int j = 1; j <= w; j++)
  100.             d1[i][j] += d1[i][j - 1];
  101.     }
  102.  
  103.  
  104.     for (int l = 1; l <= w; l++)
  105.     {
  106.         for (int r = l + 1; r <= w; r++)
  107.         {
  108.             cur = 0;
  109.             for (int m = 1; m <= h; m++)
  110.             {
  111.                 if (!d2[m][l] || !d2[m][r])
  112.                     cur = 0;
  113.                 ans += cur * ((d1[m][r] - d1[m][l]) == r - l);
  114.                 if ((d1[m][r] - d1[m][l]) == r - l)
  115.                     cur++;
  116.                
  117.                    
  118.             }
  119.         }
  120.     }
  121.  
  122.     cout << ans;
  123.  
  124.     return 0;
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement