Cod sursă (job #693609)

Utilizator avatar ridiche34 Tudor Diaconu ridiche34 IP ascuns
Problemă Canibali (lot liceu) Compilator cpp-32 | 2,02 kb
Rundă Arhiva de probleme Status evaluat
Dată 6 feb. 2023 09:44:47 Scor 0
#include <fstream>
#include <set>

using namespace std;

struct canibal{
    int x, y, z, t;

    bool operator < (const canibal obj)
    {
        if (x < obj.x)
        {
            return 1;
        }
        else if (x == obj.x)
        {
            if (y < obj.y)
            {
                return 1;
            }
            else if (y == obj.y)
            {
                if (z < obj.z)
                {
                    return 1;
                }
                else if (z == obj.z)
                {
                    if (t < obj.t)
                    {
                        return 1;
                    }
                    else if (z == obj.z)
                    {
                        return 0;
                    }
                    else
                    {
                        return 0;
                    }
                }
                else
                {
                    return 0;
                }
            }
            else
            {
                return 0;
            }
        }
        else
        {
            return 0;
        }
    }
};

ifstream in;
ofstream out;

set<canibal> canibali;

int main()
{
    in.open("canibali.in");
    out.open("canibali.out");
    int n;
    in >> n;
    for (int i = 0; i < n; i++)
    {
        int x, y, z, t; canibal current;
        in >> x >> y >> z >> t;
        current.x = x;
        current.y = y;
        current.z = z;
        current.t = t;
        canibali.insert(current);
    }
    for (set<canibal>::iterator it = canibali.begin(); it != canibali.end(); it++)
    {
        for (set<canibal>::iterator jt = canibali.begin(); jt != it; jt++)
        {
            if (jt->x < it->x && jt->y < it->y && jt->z < it->z && jt->t < it->t)
            {
                set<canibal>::iterator todelete = jt;
                jt++;
                canibali.erase(todelete);
            }
        }
    }
    out << canibali.size();
    return 0;
}