Cod sursa(job #1244612)

Utilizator radu_cebotariRadu Cebotari radu_cebotari Data 17 octombrie 2014 21:14:31
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<fstream>
#include<algorithm>
#include<iostream>
using namespace std;
ifstream in("cutii.in");
ofstream out("cutii.out");

struct cutie{
    int x,y,z;
};
cutie v[5000],q[5000];
int n,L;

void citire()
{

    for(int i = 1 ; i <= n ; i++)
        in>>v[i].x>>v[i].y>>v[i].z;
}

bool comp(cutie a,cutie b)
{

    return (a.x < b.x);

}

void bin_search(cutie val,int left,int right)
{

    int mij;
    while(left <= right){
        mij = (left+right)/2;
        if(val.x > q[mij].x && val.y > q[mij].y && val.z > q[mij].z)
            left = mij+1;
        else right = mij-1;
    }
    if(left > L)
        q[++L] = val;
    else if(q[left].x > val.x && q[left].y > val.y)
        q[left] = val;

}

void solve()
{
    for(int i = 1 ;i <= n ; i++)
        q[i].x = q[i].z = q[i].y = 0;
    sort(v+1,v+n+1,comp);
    q[1] = v[1];
    L = 1;
    for(int i = 2 ;i <= n ; i++){
        bin_search(v[i],1,L);
    }
    out<<L<<"\n";

}

int main()
{
    int T;
    in>>n>>T;
    for( ; T ; --T){
    citire();
    solve();
    }
    return 0;
}