Cod sursa(job #11162)

Utilizator pocaituDavid si Goliat pocaitu Data 30 ianuarie 2007 19:16:53
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include<fstream.h>
#include<string.h>
int maxx,nr;
char min[100][15];
void det_min(char s[15],char s1[15])
{int i,j,k,d,gasit;
 char sdf[15];


if(!strlen(s))
  {if(strlen(s1)>maxx)
	maxx=strlen(s1);
   return;
   }


 if(!strlen(s1))
   {if(strlen(s)<strlen(min[1]))
	  {nr=1;strcpy(min[nr],s);}
	else
	  if(strlen(s)==strlen(min[1]))
		{for(i=1;i<=nr;i++)
		 if(!strcmp(min[i],s))
		   return;

		strcpy(min[++nr],s);}
	return;
		//[++min[0]],s);
	}

 if(strlen(s)==1)
  {s[1]=s1[0];
   s[2]=NULL;
   det_min(s,s1+1);
   return;
   }

 for(i=0;i<strlen(s)-1;i++)


  {for(j=0;j<=i;j++)
   sdf[j]=s[j];
   sdf[j]=s1[0];
   sdf[j+1]=NULL;
   strcat(sdf,s+i+1);


   do
	{gasit=0;
	 for(d=0;d<strlen(sdf);d++)
	  {for(j=d+1;sdf[d]==sdf[j];j++);
	   if(j-d>=3)
		  {gasit=1;
		   for(k=d;k<strlen(sdf)-j+d;k++)
		   sdf[k]=sdf[k+j-d];
		   sdf[k]=NULL;
		   break;
		   }
	   }

	 }
	while(gasit);

   det_min(sdf,s1+1);
   }


 }

int main()
{char s1[15],s2[15];
 int i;
 ifstream f("balls.in");
 //f>>s1>>s2;
 strcpy(s1,"r");
 strcpy(s2,"rbrrbbrbrbrbb");
 strcpy(min[1],"12345678901234");
 det_min(s1,s2);

 ofstream g("balls.out");
 if(maxx)
  {g<<strlen(s2)-maxx;
   g.close();
   return 0;
   }
 g<<nr<<'\n';
 for(i=1;i<=nr;i++)
  g<<min[i]<<'\n';
  g.close();
  return 0;
  }