Hej mecze sie z tym zadaniem juz drugi dzien i naprawde nie wiem co jest tutaj zle. Moze mi ktos pomoc?
#include <iostream>
#include <list>
struct Ant
{
int x;
int y;
int c;
};
struct Area
{
int ax, ay;
int bx;
int cy;
};
bool belongs(const Area & area, const Ant & ant);
int main()
{
Ant ant;
Area area;
std::list<Ant> blacks;
unsigned long int d, n, count;
std::cin >> d;
std::cin >> n;
for (int i = 0; i < d; ++i)
{
area.ax = -1;
blacks.clear();
count = 0;
for (int j = 0; j < n; ++j)
{
std::cin >> ant.x;
std::cin >> ant.y;
std::cin >> ant.c;
if (!ant.c)
blacks.push_back(ant);
else if(!belongs(area, ant))
{
++count;
if (area.ax == -1)
{
area.ax = ant.x;
area.bx = ant.x;
area.ay = ant.y;
area.cy = ant.y;
continue;
}
if (ant.x < area.ax)
area.ax = ant.x;
else
area.bx = ant.x;
if (ant.y < area.ay)
area.ay = ant.y;
else
area.cy = ant.y;
}
else
++count;
}
for (auto &x : blacks)
if (belongs(area, x))
++count;
if (area.ax == area.bx || area.cy == area.ay)
std::cout << 0 << std::endl;
else
std::cout << count << std::endl;
}
}
bool belongs(const Area & area, const Ant & ant)
{
if (ant.x >= area.ax && ant.y >= area.ay && ant.x <= area.bx && ant.y <= area.cy)
return true;
else
return false;
}