Cod sursa(job #647879)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 12 decembrie 2011 10:20:33
Problema Cutii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<cstdio>
#include<algorithm>
using namespace std;
#define N 3501
struct P
{int x,y,z;};
P p[N];
int i,n,t,c[N],a[N],b[N],k;

int min(int a,int b)
{return a<b?a:b;}

int C(P a,P b)
{return a.x<b.x;}

int D(int a[N],int k)
{int i,j,c,b[N],m=0;
for(i=1;i<=n;i++)
      {for(j=0,c=k;c;c>>=1)
      if(j+c<=m&&b[j+c]<a[i]) 
              j+=c;
      if(b[j]<a[i]) 
              j++;
      if(j>m) 
              m=j;
      b[j]=a[i];}
return m;}

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);
      for(k=1;k<=n;k<<=1);
      for(i=1;i<=n;i++)
              a[i]=p[i].y,b[i]=p[i].z,c[i]=a[i]+b[i];
      fprintf(g,"%d\n",min(min(D(a,k),D(b,k)),D(c,k)));}
return 0;}