Advertisement
eduardovp97

C.cpp

Nov 18th, 2019
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.52 KB | None | 0 0
  1. // dile a la jardinera que traigo flores
  2. // corner cases // int vs ll // cin vs scanf
  3. #include <bits/stdc++.h>
  4. #define ff first
  5. #define ss second
  6. #define mp make_pair
  7. #define pb push_back
  8. #define sz(x) int(x.size())
  9. #define fill(x,v) memset(x,v,sizeof(x))
  10. #define FER(i,a,b) for(int i = int(a); i < int(b); ++i)
  11. #define trace(x) cout << #x << " = " << x << endl
  12. #define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
  13. using namespace std;
  14. typedef long long ll;
  15. typedef pair<int,int> ii;
  16.  
  17. vector< vector<int> > dots;
  18. map<int,vector<int> > mapa;
  19.  
  20. int check(int id, int x1, int x2){
  21.     auto it = lower_bound(dots[id].begin(),dots[id].end(),x1);
  22.     if(it == dots[id].end()) return 0;
  23.     int val = *it;
  24.     it++;
  25.     if(val == x1 and it != dots[id].end() and *it == x2) return 1;
  26.     if(val > x2) return 0;
  27.     return -1;
  28. }
  29.  
  30. int main(){
  31.  
  32.     fastio;
  33.     int n,x,y;
  34.     cin >> n;
  35.     FER(i,0,n){
  36.         cin >> x >> y;
  37.         mapa[y].pb(x);
  38.     }
  39.  
  40.     int c = 0;
  41.     dots.resize(sz(mapa));
  42.     for(auto &par : mapa){
  43.         dots[c] = par.second;
  44.         sort(dots[c].begin(),dots[c].end());
  45.         c++;
  46.     }
  47.  
  48.     int ans = 0;
  49.     for(int i = 0; i < sz(dots); ++i){
  50.         for(int j = 0; j < sz(dots[i])-1; ++j){
  51.             int x1 = dots[i][j], x2 = dots[i][j+1];
  52.             for(int k = i-1; k >= 0; --k){
  53.                 int res = check(k,x1,x2);
  54.                 if(res == 1) ans++;
  55.                 if(res == 1 or res == -1) break;
  56.             }
  57.             for(int k = i+1; k < sz(dots); ++k){
  58.                 int res = check(k,x1,x2);
  59.                 if(res == 1) ans++;
  60.                 if(res == 1 or res == -1) break;
  61.             }
  62.         }
  63.     }
  64.     cout << ans/2 << endl;
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement