Cod sursa(job #1126779)

Utilizator killlerr1Chilom Mircea killlerr1 Data 27 februarie 2014 09:43:27
Problema Zone Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.3 kb
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;

#define nmax 10


int sum[nmax], a[517][517], sol[nmax], n;
bool ok;


bool Check(int a)
{
    for( int i = 1; i <= 9; ++i )
        if( sol[i] == a )
            return true;
    return false;
}

int main()
{
    freopen("zone.in", "r", stdin );
    freopen("zone.out", "w", stdout);
    scanf("%d", &n);
    for( int i = 1; i <= 9; ++i )
        scanf("%d", &sol[i]);
    sort(sol + 1, sol+10);
    for( int i = 1 ; i <= n; ++i )
        for( int j = 1; j <= n; ++j )
        {
            scanf("%d", &a[i][j]);
            if( i == 1 && j == 1 )
                continue;
            else
                a[i][j] += a[i][j-1] + a[i-1][j] - a[i-1][j-1];
        }
    for( int l1 = 1; l1 <= n; ++l1 )
        for( int c1 = 1; c1 <= n; ++c1 )
            if( Check(a[l1][c1]) )
                for( int l2 = 1; l2 <= n; ++l2 )
                    if( Check(a[l2][c1] - a[l1][c1]) )
                        for( int c2 = 1; c2 <= n; ++c2 )
                        {
                            sum[1] = a[l1][c1];
                            sum[2] = a[l1][c2] - sum[1];
                            sum[3] = a[l1][n] - sum[2] - sum[1];
                            sum[4] = a[l2][c1] - sum[1];
                            sum[5] = a[l2][c2] - sum[4] - sum[2] - sum[1];
                            sum[6] = a[l2][n] - sum[5] - sum[3] - sum[2] - sum[1] - sum[4];
                            sum[7] = a[n][c1] - sum[4] - sum[1];
                            sum[8] = a[n][c2] - sum[7] - sum[5] - sum[4] - sum[1] - sum[2];
                            sum[9] = a[n][n] - sum[8] - sum[3] - sum[7] - sum[6] - sum[5] - sum[4] - sum[1] - sum[2];
                            sort( sum + 1 , sum + 10 );
                            cin.get();
                            cout << "ok " << sum[1] << ' ' << a[2][2] << ' ';
                            for( int i = 1; i <= 9; ++i )
                                if( sum[i] != sol[i] )
                                    ok = true;
                            if( ok == false ){
                                printf( "%d%d%d%d\n", l1, l2, c1, c2 );
                                return 0;
                            }

                        }
    return 0;
}