fork(3) download
  1. #include <iostream>
  2. #include <list>
  3.  
  4. struct Ant
  5. {
  6. int x;
  7. int y;
  8. int c;
  9. };
  10.  
  11. struct Area
  12. {
  13. int ax, ay;
  14. int bx;
  15. int cy;
  16. };
  17.  
  18. bool belongs(const Area & area, const Ant & ant);
  19.  
  20. int main()
  21. {
  22. Ant ant;
  23. Area area;
  24. std::list<Ant> blacks;
  25. unsigned long int d, n, count;
  26. std::cin >> d;
  27. std::cin >> n;
  28. for (int i = 0; i < d; ++i)
  29. {
  30. area.ax = -1;
  31. blacks.clear();
  32. count = 0;
  33. for (int j = 0; j < n; ++j)
  34. {
  35. std::cin >> ant.x;
  36. std::cin >> ant.y;
  37. std::cin >> ant.c;
  38. if (ant.c == 0)
  39. blacks.push_back(ant);
  40. else if(!belongs(area, ant))
  41. {
  42. ++count;
  43. if (area.ax == -1)
  44. {
  45. area.ax = ant.x;
  46. area.bx = ant.x;
  47.  
  48. area.ay = ant.y;
  49. area.cy = ant.y;
  50. continue;
  51. }
  52. if (ant.x < area.ax)
  53. area.ax = ant.x;
  54. else if (ant.x > area.bx)
  55. area.bx = ant.x;
  56. if (ant.y < area.ay)
  57. area.ay = ant.y;
  58. else if (ant.y > area.cy)
  59. area.cy = ant.y;
  60. }
  61. else
  62. ++count;
  63. }
  64. for (auto &x : blacks)
  65. if (belongs(area, x))
  66. ++count;
  67. std::cout << count << std::endl;
  68. }
  69. }
  70.  
  71. bool belongs(const Area & area, const Ant & ant)
  72. {
  73. if (ant.x >= area.ax && ant.y >= area.ay && ant.x <= area.bx && ant.y <= area.cy)
  74. return true;
  75. else
  76. return false;
  77. }
  78.  
Success #stdin #stdout 0s 4496KB
stdin
1
9
6 3 1
1 2 0
7 2 0
5 1 1
2 5 1
4 4 0
1 4 1
3 3 0
5 7 0
stdout
7