Cod sursa(job #3266746)

Utilizator PetreIonutPetre Ionut PetreIonut Data 10 ianuarie 2025 10:14:14
Problema Cutii Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

ifstream f("cutii.in");
ofstream g("cutii.out");

const int nMax=1e6+5;
ll n, t, nr, rez;
struct numar
{
    ll x, y, z;
} a[nMax];

bool cmp(numar a, numar b)
{
    if(a.x*a.y*a.z==b.x*b.y*b.z)
    {
        int nr1=0, nr2=0;
        if(a.x<=b.x) nr1++;
        else nr2++;
        if(a.y<=b.y) nr1++;
        else nr2++;
        if(a.z<=b.z) nr1++;
        else nr2++;
        return nr1>nr2;
    }
    return a.x*a.y*a.z<b.x*b.y*b.z;
}

bool verif(numar a, numar b)
{
    if(a.x>b.x && a.y>b.y && a.z>b.z) return true;
    return false;
}

void solve()
{
    for(int i=1; i<=n; i++)f >> a[i].x >> a[i].y >> a[i].z;
    sort(a+1, a+n+1, cmp);
    ll nr=0;
    numar x=a[n];

    rez=0;
    nr=1;
    bool ok=false;
    int rm=n-1;
    while(rm>=1)
    {
        nr=1;
        for(int i=rm; i>=1; i--)
        {
            if(verif(x, a[i])==true) x=a[i], nr++;
        }
        x=a[rm];
        rm--;
        rez=max(rez, nr);
    }
    g << rez << '\n';
}

int main()
{
    ios_base::sync_with_stdio(NULL);
    f >> n >> t;
    while(t)
    {
        t--;
        solve();
    }
}