Cod sursa(job #2022313)

Utilizator refugiatBoni Daniel Stefan refugiat Data 16 septembrie 2017 12:14:26
Problema Zone Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.78 kb
# include <iostream>
# include <fstream>
# include <algorithm>
# define DIM 520
# define a first.first
# define b first.second
# define c second.first
# define d second.second
using namespace std;
ifstream si("zone.in");
ofstream so("zone.out");
pair<pair<int,int>,pair<int,int> > sol[10005];
int v[DIM][DIM];
long long p[DIM][DIM],val[10];
int ver(long long nr)
{
    for(int i=1;i<=9;i++)
        if(nr==val[i])
            return 1;
    return 0;
}
int main()
{
    int n,l1,l2,c1,c2;
    si>>n;
    for(int i=1;i<=9;i++)
        si>>val[i];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
            si>>v[i][j];
            p[i][j]=p[i-1][j]+p[i][j-1]-p[i-1][j-1]+v[i][j];
        }
    int k=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(ver(p[i][j]))
            {
                l1=i;
                c1=j;
                for(l2=l1+1; l2<=n; l2++)
                {
                    if(ver(p[l2][j]-p[i][j]))
                    {
                        for(c2=c1+1; c2<=n; c2++)
                            if(ver(p[l1][c2]-p[l1][c1])&&ver(p[l1][n]-p[l1][c2])&&ver(p[l2][c2]-p[l2][c1]-p[l1][c2]+p[l1][c1])&&ver(p[l2][n]-p[l2][c2]-p[l1][n]+p[l1][c2])&&ver(p[n][c1]-p[l2][c1])&&ver(p[n][c2]-p[n][c1]-p[l2][c2]+p[l2][c1])&&ver(p[n][n]-p[l2][n]-p[n][c2]+p[l2][c2]))
                            {
                                sol[++k].a=l1;
                                sol[k].b=c1;
                                sol[k].c=l2;
                                sol[k].d=c2;
                            }
                    }
                }
            }
        }
    }
    sort(sol+1,sol+k+1);
    so<<sol[1].a<<' '<<sol[1].c<<' '<<sol[1].b<<' '<<sol[1].d<<'\n';
    return 0;
}