fork download
  1. #include <string>
  2. #include <iostream>
  3. #include <map>
  4. #include <algorithm>
  5. using namespace std;
  6. typedef pair<int, int> point;
  7.  
  8. struct line
  9. {
  10. int lineid;
  11. point starting, ending;
  12.  
  13. bool operator<(const line& other) const
  14. {
  15. return other.lineid < lineid;
  16. }
  17.  
  18. };
  19. int main(int argc, char* argv[])
  20. {
  21. typedef map<int, line> mymap;
  22. line w,x,y,z;
  23. w.lineid = 1;
  24. w.starting = { 5, 1 };
  25. w.ending = { 5, 100 };
  26. x.lineid = 2;
  27. x.starting = { 20, 56 };
  28. x.ending = { 120, 56 };
  29. y.lineid = 3;
  30. y.starting = { 100, 150 };
  31. y.ending = { 100, 200 };
  32. z.lineid = 4;
  33. z.starting = { 330, 50 };
  34. z.ending = { 330, 150 };
  35.  
  36. mymap bin1;
  37. bin1.insert({ w.lineid, w });
  38. bin1.insert({ x.lineid, x });
  39. bin1.insert({ y.lineid, y });
  40.  
  41. mymap bin2;
  42. bin2.insert({ x.lineid, x });
  43. bin2.insert({ y.lineid, y });
  44. bin2.insert({ z.lineid, z });
  45.  
  46. mymap out;
  47. mymap::iterator out_itr(out.begin());
  48. set_intersection(bin1.begin(), bin1.end(), bin2.begin(), bin2.end(),
  49. inserter(out, out_itr),
  50. [] (const std::pair<int, line>& p1, const std::pair<int, line>& p2) { return p1.first != p2.first; } );
  51. cout << "" << out.size();
  52.  
  53. return 0;
  54. }
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
2