Cod sursa(job #133678)

Utilizator vlad_olteanVladimir Oltean vlad_oltean Data 9 februarie 2008 14:39:38
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <fstream.h>
#include <iostream.h>
#include <conio.h>

struct cutie {int x,y,z;};

int bigger(cutie a, cutie b)
{
   if((a.x>b.x)&&(a.y>b.y)&&(a.z>b.z)) return 1;
   return 0;
}

int smaller(cutie a, cutie b)
{
   if((a.x<b.x)&&(a.y<b.y)&&(a.z<b.z)) return 1;
   return 0;
}

int equal(cutie a, cutie b)
{
   if((a.x==b.x)&&(a.y==b.y)&&(a.z==b.z)) return 1;
   return 0;
}

int main()
{

   clrscr();

   cutie c[3500], cm, ct;

   int a,i,j,x;
   long n,t,n2;

   int count;

   ifstream fin("cutii.in");
   ofstream fout("cutii.out");

   fin>>n>>t;

   for(a=1;a<=t;a++)  // executa de t ori actiunea
   {
      count=0;  //Initializez contorul
      for(i=1;i<=n;i++) fin>>c[i].x>>c[i].y>>c[i].z;  //citesc cutiile

      //Initializez cutia maxima all-time
      cm.x=0;cm.y=0;cm.z=0;
      n2=n;
      while(n2)
      {

	 //Afla cutia maxima temporara
	 ct.x=0; ct.y=0; ct.z=0;
	 for(i=1;i<=n2;i++)
	    if (bigger(c[i],ct))
	       { ct=c[i]; x=i;}

	 n2--;
	 for(j=x;j<=n2;j++) c[j]=c[j+1];

	 if(smaller(ct,cm)||(n2+1==n)) cm=ct;

	 if(equal(ct,cm)) count++;

	 cout<<n-n2+1<<" "<<"cm="<<cm.x<<"x"<<cm.y<<"x"<<cm.z<<" ";
	 cout<<"ct="<<ct.x<<"x"<<ct.y<<"x"<<ct.z<<endl;
      }

      fout<<count<<endl;
   }

   fin.close();
   fout.close();

   return 0;

}