Cod sursa(job #1691113)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 16 aprilie 2016 21:41:14
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <cstdio>
#include <algorithm>
#define DIM 3505
using namespace std;

struct data{
    int x, y, z;
    int indi;
}v[DIM];

int best[DIM];
int d[DIM];

int caut( int n, int x ){

    int pas = 1 << 12;
    int i = 0;

    while( pas ){

        if( i + pas <= n && v[d[i+pas]].x < v[x].x && v[d[i+pas]].y < v[x].y  )
            i += pas;
        pas /= 2;

    }

    return i;

}

bool cmp( data a, data b ){
    return ( a.x < b.x );
}

int main()
{

    freopen("cutii.in","r",stdin);
    freopen("cutii.out","w",stdout);

    int n, m, i, j, s, t, k, ma;

    scanf("%d%d",&n,&m);
    while( m-- ){
        for( i = 1; i <= n; ++i )
            scanf("%d%d%d",&v[i].x,&v[i].y,&v[i].z);

        sort( v + 1, v + 1 + n, cmp );

        ma = -(1<<23);
        best[1] = d[1] = t = 1;

        for( i = 2; i <= n; ++i ){
            k = caut( t, i );
            best[i] = k + 1;
            d[k+1] = i;
            if( k + 1 > t ) t = k + 1;
            if( ma < best[i] ) ma = best[i];
        }

        printf("%d\n",ma);

        for( i = 1; i <= n; ++i )
            best[i] = 0;


    }


    return 0;
}