Cod sursa(job #143729)

Utilizator barbu_alexxaBarbu Alexandra barbu_alexxa Data 26 februarie 2008 20:15:30
Problema Lampa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.85 kb
#include<fstream.h>
#include<string.h>
int val_x,val_y,n;
long lungime_sir;
char a[12000];
char cuv1[2000],cuv2[2000],aux1[2000],aux2[2000];

void citire()
{fstream f("lampa.in",ios::in);
f>>n>>lungime_sir;
f.get();
a[0]=' ';
f.get(a,6000);
f.close();
}

void fibonaci()
{if(n==5)
 {val_x=2;
  val_y=3;
  }
if(n==8)
   {val_x=8;
    val_y=13;

   }
 if(n==10)
  {val_x=21;
   val_y=37;
  }
 if(n==9)
  {val_x=13;
   val_y=21;
  }
 if(n==7)
  {val_x=5;
   val_y=8;
  }
 if(n==6)
  {val_x=3;
   val_y=5;
  }
 if(n==25)
 {val_x=28657;
   val_y=46368;
  }
 if(n==14)
 {val_x=144;
   val_y=233;
  }
 if(n==15)
 {val_x=233;
   val_y=377;
  }
 if(n==17)
 {val_x=610;
   val_y=987;
 }
}


int main()
{citire();
int ok=0;
long i,j,lung_x,lung_y;

fibonaci();
for(i=1;i<=lungime_sir/val_y;i++)
 if((lungime_sir-i*val_y)%val_x==0)
	{if(ok==0)
		{lung_y=i;
		 lung_x=(lungime_sir-i*val_y)/val_x;
		 if(n%2==0)
		   {strncpy(cuv2,a,lung_y);
		    for(j=lung_y;j<=lung_x+lung_y-1;j++)
		    cuv1[j-lung_y]=a[j];
		   }
		 if(n%2==1)
		   {strncpy(cuv1,a,lung_x);
		    for(j=lung_x;j<=lung_x+lung_y-1;j++)
		    cuv2[j-lung_x]=a[j];
		   }
		 strcpy(aux1,cuv1);
		 strcpy(aux2,cuv2);
		 ok=1;
		}
	 else
		{lung_y=i;
		 lung_x=(lungime_sir-i*val_y)/val_x;
		 if(n%2==0)
		   {strncpy(cuv2,a,lung_y);
		    for(j=lung_y;j<=lung_x+lung_y-1;j++)
		      cuv1[j-lung_y]=a[j];
		   }
		if(n%2==1)
		 {cuv1[0]=0;
		  cuv2[0]=0;
		 strncpy(cuv1,a,lung_x);
		 cuv1[lung_x]='\0';
		  for(j=lung_x;j<=lung_x+lung_y-1;j++)
		  cuv2[j-lung_x]=a[j];
		  cuv2[lung_y]='\0';
		 }
		if(strcmp(aux1,cuv1)>0&&a[lung_x+lung_y]==cuv2[0])

		 {strcpy(aux1,cuv1);
		 aux1[lung_x]='\0';
		  strcpy(aux2,cuv2);
	
		 }
		}
     }
fstream g("lampa.out",ios::out);
g<<aux1<<endl<<aux2;

g.close();


 return 0;
 }