Cod sursa(job #1159709)

Utilizator binicBinica Nicolae binic Data 29 martie 2014 20:16:23
Problema Zone Scor 80
Compilator cpp Status done
Runda sambata_duminica Marime 2.07 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,i,x,j,k,t,p,s1,y,q,s[10],r[10],a[515][515];
int main ()
{
    freopen("zone.in","r",stdin);
    freopen("zone.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=9;i++)
        scanf("%d",&s[i]);
    sort(s+1,s+10);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
        {
            scanf("%d",&x);
            a[i][j]=x+a[i][j-1]+a[i-1][j]-a[i-1][j-1];
        }
    for(i=1;i<=n-1;i++)
        for(j=1;j<=n-1;j++)
        {
            t=0;
            for(q=1;q<=9;q++)
                if(s[q]==a[i][j]){t=1;break;}
            if(t==1)
            {
                for(k=i+1;k<=n-1;k++)
                    for(p=j+1;p<=n-1;p++)
                    {
                        s1=a[n][n]+a[k][p]-a[k][n]-a[n][p];
                        t=0;
                        for(q=1;q<=9;q++)
                            if(s[q]==s1){t=1;break;}
                        if(t==1)
                        {
                            r[1]=a[i][j];
                            r[2]=a[i][p]-a[i][j];
                            r[3]=a[i][n]-a[i][p];
                            r[4]=a[k][j]-a[i][j];
                            r[5]=a[k][p]+a[i][j]-a[k][j]-a[i][p];
                            r[6]=a[k][n]-a[k][p]+a[i][p]-a[i][n];
                            r[7]=a[n][j]-a[k][j];
                            r[8]=a[n][p]-a[k][p]-a[n][j]+a[k][j];
                            r[9]=s1;
                            sort(r+1,r+10);
                            t=0;
                            for(y=1;y<=9;y++)
                                if(r[y]!=s[y])
                                {
                                    t++;
                                    break;
                                }
                            if(t==0)
                            {
                                printf("%d %d %d %d",i,k,j,p);
                                return 0;
                            }
                        }
                    }
            }
        }
    return 0;
}