Cod sursa(job #289950)

Utilizator alisssiaMititelu Andra alisssia Data 27 martie 2009 11:03:19
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
using namespace std;
#include<cstdio>
#include<string>
#include<cstdlib>
#define nmax 3501
int n,T,arb[nmax*3][nmax*3],dp[nmax];
struct cutie { int x,y,z;};
cutie v[nmax];

void zero(int px,int py)
{
    if(arb[px][py])
    {
	for(int i=px;i<=n;i+=i & -i)
	    for(int j=py;j<=n;j+=j &-j)
		arb[i][j]=0;
    }
}

void update(int px,int py,int val)
{
    int i,j;
    for(i=px;i<=n;i+=i &-i)
	for(j=py;j<=n;j+=j & -j)
	     arb[i][j]=val;
}

int query(int px,int py)
{
   int  max=0,i,j;
    for(i=px;i;i-= i &-i)
	for(j=py;j;j-=j & -j)
	    if(max<arb[i][j]) max=arb[i][j];
    return max;
}


int cmp( cutie* a, cutie * b)
{
   return a->x-b->x;
}

int main()
{
    int i,j,max ; 
   /* freopen("cutii.in","r",stdin);
    freopen("cutii.out","w",stdout);
    scanf("%d%d",&n,&T);
    for(j=0;j<T;j++)
	{
	for(i=1;i<=n;i++)
	zero(i,i);	    
	
	for(i=0;i<n;i++)
	    scanf("%d%d%d",&v[i].x,&v[i].y,&v[i].z); 
	qsort(v,n,sizeof(cutie),(int(*)(const void *,const void *))cmp);
	dp[0]=1;
	update(v[0].y,v[0].z,1);
	for(i=1;i<n;i++)
	{
	    dp[i]=1+query(v[i].y,v[i].z);
	    update(v[i].y,v[i].z,dp[i]);
	}
	max=0;
	for(i=0;i<n;i++)
	    if(dp[i]>max) max=dp[i];
	printf("%d\n",max);
    }*/
    return 0;
}