Cod sursa(job #182583)

Utilizator albuaAlbu Alexandru albua Data 21 aprilie 2008 08:45:12
Problema Lampa Scor 40
Compilator c Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <stdio.h>
#include <string.h>
#define MAX 1200000

FILE *f,*g;
char s[MAX],temp[MAX],s2[MAX/2],s1[MAX/2];
long len,dim;
int n;

int verifica(long a, long b)
{
  long i;
  for(i=a;i<b;i++)
    if(s[i]!=s[i-a]) return 0;
  return 1;
}

void executa(int n,long len)
{
  long i,ok=0,j;
  if(len%2==0)
    j=len/2;
  else
    j=len/2+1;
  for(i=j;(i<len)&&(ok==0);i++)
    if(verifica(i,len))
	  {
	    ok=1;
	  }
  if(ok==0)
    {
	  fprintf(g,"0\n");
	  fclose(f);  fclose(g);
	  exit(0);
	}
  strcpy(temp,s+len-i+1);
  if(n-1>3)
    {
      strcpy(s,temp);
      executa(n-1,strlen(s));
    }
  else
    {
      strncpy(s2,s,len-i+1);
      strncpy(s1,s+len-i+1,len-2*(len-i+1));
    }
}

int main()
{
  f=fopen("lampa.in","r");
  g=fopen("lampa.out","w");
  fscanf(f,"%d %ld\n",&n,&dim);
  fgets(s,MAX,f);
  strncpy(temp,s,dim);
  strcpy(s,temp);
  executa(n,dim);
  fprintf(g,"%s\n%s\n",s1,s2);
  fclose(f);  fclose(g);
  return 0;
}