Cod sursa(job #100999)

Utilizator sigridMaria Stanciu sigrid Data 12 noiembrie 2007 21:36:28
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 1.25 kb
#include<fstream.h>
#include<string.h>
#define dim 10000001
char (*a)=new char[dim];
char b[22];
char cc[dim];
int main()
{ifstream f("abc2.in");
 ofstream g("abc2.out");
 unsigned long n,l,i,j,li,ls;
 int ok=0;
 f.get(a,dim,'\n');
 f.get();
 n=strlen(a);
 for(i=0;i<=n;i++) cc[i]=1;
 int c=0,ok2;
 f.get(b,22,'\n');
 l=strlen(b);
 li=0;
 ls=l-1;ok2=1;
 while((ls<n)&&ok2)
    {ok=0;
     if(!cc[li])
      {ok=1;
       for(i=1;i<l;i++)
	{if(a[li+i]!=b[i]) {ok=0;break;}}
       if(ok) {ok2=1;break;}
	else{li+=l;
	     ls+=l;
	    }
      }
     else if((a[li]==b[0])&&(a[ls]==b[l-1]))
	   {ok=1;
	    for(i=1;i<l;i++)
	     if(a[li+i]!=b[i]) {ok=0;break;}
	    if(ok) {c++;cc[li]=0;}
	   }
     li++;
     ls++;
    }
 while(f.get(b,22,'\n'))
  {f.get();
   li=0;
   ls=l-1;
   ok2=1;
   while((ls<n)&&ok2)
    {ok=0;
     if(!cc[li])
      {ok=1;
       for(i=1;i<l;i++)
	{if(a[li+i]!=b[i]) {ok=0;break;}}
       if(ok) {ok2=1;break;}
	else{li+=l;
	     ls+=l;
	    }
      }
     else if((a[li]==b[0])&&(a[ls]==b[l-1]))
	   {ok=1;
	    for(i=1;i<l;i++)
	     if(a[li+i]!=b[i]) {ok=0;break;}
	    if(ok) {c++;cc[li]=0;}
	   }
     li++;
     ls++;
    }
  }
f.close();
 g<<c<<'\n';
g.close();
return 0;
}