Cod sursa(job #866725)

Utilizator radu2004GOLD radu radu2004 Data 28 ianuarie 2013 17:47:01
Problema Litere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <cstdio>
#include <cstring>

using namespace std;
struct  punct {int l;int c;} ;
punct c[40000],v;
FILE *f,*g;
char s[100],a[501][501],c2;
int m,n,i,j,e1,e,k1,k2,k,ok,b[501][501],l,c1,dl[]={0,1,0,-1},dc[]={1,0,-1,0},v1;
long long nr,p,u;
int main()
{f=fopen  ("litere.in","r");
 g=fopen ("litere.out","w");
 fgets (s,100,f);
 k2=strlen (s);
 fscanf (f,"%d %d",&n,&m);
 fscanf (f,"%c",&c2);
 for (i=0;i<n;i++) fgets  (a[i],m+2,f);
 k=0;
 for (i=0;i<n;i++)
  for (j=0;j<strlen (a[i]);j++)

    if (s[k]==a[i][j])
       {
           p=1;u=1;
           c[p].l=i;b[l][c1]=1;
           c[p].c=j;ok=0;k1=4;k2=0;k++;
           while (p<=u &&  k<=strlen (s))
            {
                v=c[p];
                for (v1=0;v1<=3;v1++)
                 {    k1--;
                     l=v.l+dl[v1];
                     c1=v.c+dc[v1];
                     if (a[l][c1]==s[k] && b[l][c1]==0) {k2++;
                                         c[++u].l=l;
                                         c[u].c=c1;
                                         if (k==strlen (s)-2) nr++;
                                         b[l][c1]=1;

                                        }

                 }
               if (k1==0) {k1=k2*4;
                           k2=0;
                           k++;
                          }
            p++;
            }

        for (e=0;e<=n;e++)
          for (e1=0;e1<=m;e1++) b[e][e1]=0;
          k=0;
       }


fprintf (g,"%lld",nr);

    return 0;
}