Pagini recente » Cod sursa (job #2652155) | Cod sursa (job #1829556) | Cod sursa (job #2641045) | Cod sursa (job #1360873) | Cod sursa (job #647303)
Cod sursa(job #647303)
#include<cstdio>
#include<algorithm>
using namespace std;
#define N 3501
struct P
{int x,y,z;};
P p[N];
int i,n,t,q[N],m,k,b[N],j,c;
int C(P a,P b)
{return a.x<b.x;}
int main()
{FILE *f=fopen("cutii.in","r"),*g=fopen("cutii.out","w");
fscanf(f,"%d%d",&n,&t);
while(t--)
{for(i=1;i<=n;i++)
fscanf(f,"%d%d%d",&p[i].x,&p[i].y,&p[i].z);
sort(p+1,p+n+1,C);
p[0].x=p[0].y=p[0].z=b[0]=m=0;
for(i=1;i<=n;i++)
{if(p[b[m]].y<p[i].y&&p[b[m]].z<p[i].z)
q[i]=b[m],b[++m]=i;
for(j=0,k=m;j<k;)
{c=(j+k)/2;
if(p[b[c]].y<p[i].y&&p[b[c]].z<p[i].z)
j=c+1;
else
k=c;}
if(p[i].y<p[b[j]].y&&p[i].z<p[b[j]].z)
{if(j)
q[i]=b[j-1];
b[j]=i;}}
fprintf(g,"%d\n",m);}
return 0;}