Cod sursa(job #1937711)

Utilizator andy1207Cioltan Andrei andy1207 Data 24 martie 2017 10:16:11
Problema Zone Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.7 kb
#include<cstdio>

const int NMAX=512;
const int ZMAX=9;

int v[ZMAX+1];
int vv[ZMAX+1];
int a[NMAX+1][NMAX+1];
int s[NMAX+1][NMAX+1];

int caut(int var)
{
 int gasit=0;
 for(int i=1;i<=n && gasit==0;i++)
     {
      if(v[i]==var)
         gasit=1;
     }
 return gasit;
}

int main()
{
 int n;
 freopen("zone.in","r",stdin);
 freopen("zone.out","w",stdout);
 scanf("%d ",&n);
 for(int i=1;i<=9;i++)
     {
      scanf("%d ",&v[i]);
     }
 for(int i=1;i<=n;i++)
     {
      for(int j=1;j<=n;j++)
          {
           scanf("%d ",&a[i][j]);
          }
     }
 for(int i=1;i<=n;i++)
     {
       for(int j=1;j<=n;j++)
           {
             s[i][j]=a[i][j]+s[i-1][j]+s[i][j-1]-s[i-1][j-1];
           }
     }
 for(int i=1;i<=n;i++)
     {
      for(int j=1;j<=n;j++)
          {
            //zona 1;
            vv[1]=s[i][j];
            if(caut(vv[1])==1)
               {
                //zona 2;
                int pp=0,ss=0;
                for(int ci=1,q=1;ci<=n &&  q<=i && ci<=i && pp==0;ci++,q++)
                    {
                     for(int cj=j;cj<=n && pp==0;cj++)
                         {
                          ss+=a[ci][cj];
                          if(caut(ss)==1)
                            {
                             pp=1;
                             z=cj;
                            }
                         }
                    }
                if(pp==1)
                   {
                    //zona 3;
                    pp=ss=0;
                    for(int ci=1;ci<=i && pp==0;ci++)
                        {
                         for(int cj=z;cj<=n && pp==0;cj++)
                             {
                              ss+=a[ci][cj];
                              if(caut(ss)==1)
                                pp=1;
                             }
                        }
                    if(pp==1)
                       {
                        //zona 4;
                        pp=ss=0;
                        for(int ci=i;ci<=n && pp==0;ci++)
                            {
                             for(int cj=1;cj<=j && pp==0;cj++)
                                 {
                                  ss+=a[ci][cj];
                                  if(caut(ss)==1)
                                    pp=1;
                                 }
                            }
                        if(pp==1)
                           {
                            //zona 7;
                            pp=ss=0;
                            for(int ci=i;)
                           }
                       }
                   }
               }
          }
     }
return 0;
}