Cod sursa(job #761907)

Utilizator titusuTitus C titusu Data 27 iunie 2012 20:23:08
Problema Zone Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
using namespace std;

#include <fstream>
#include <iostream>
#include <algorithm>

int n, a[525][525] , l1 , l2 , c1 , c2;
long long s[525][525],v[10], z[10];

ifstream fin("zone.in");
ofstream fout("zone.out");

long long suma(int i1,int j1, int i2, int j2){
	return s[i2][j2] + s[i1-1][j1-1] - s[i1-1][j2] - s[i2][ j1-1];
}


int main(){
	fin >> n;
	for(int i=1;i<=9;++i)
		fin >> v[i];
	sort(v+1,v+10);
	for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j){
			fin >> a[i][j];
			s[i][j] = a[i][j] + s[i-1][j] + s[i][j-1] - s[i-1][j-1];
		}
	int ok = 0;
	for(int i1=1 ; i1 < n-1 && !ok ; i1++)
		for(int j1=1 ; j1 < n-1 && !ok ; j1++)
			for(int j2=j1+1;j2<n && !ok ; ++j2)
				for(int i2=i1+1 ; i2<n && !ok ; ++i2){
					z[1] = suma(1,1,i1,j1);
					z[2] = suma(1,j1+1,i1,j2);
					z[3] = suma(1,j2+1,i1,n);
					z[4] = suma(i1+1,1,i2,j1);
					z[5] = suma(i1+1,j1+1,i2,j2);
					z[6] = suma(i1+1,j2+1,i2,n);
					z[7] = suma(i2+1,1,n,j1);
					z[8] = suma(i2+1,j1+1,n,j2);
					z[9] = suma(i2+1,j2+1,n,n);
					sort(z+1, z+10);
					ok = 1;
					for(int i=1;i<10 && ok; ++i)
						if(v[i]-z[i])
							ok = 0;
					if(ok)
						l1=i1, l2=i2, c1=j1, c2=j2;
				}
	fout << l1 << " " << l2 << " " << c1 << " " << c2 << "\n";
	return 0;
}