Cod sursa(job #590134)

Utilizator valentin.harsanValentin Harsan valentin.harsan Data 15 mai 2011 17:09:59
Problema Zone Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
#include<stdio.h>
#include<algorithm>
#define N 502
using namespace std;

int n,s[9],y[N][N],ss[9];

bool ver(int l1,int l2,int c1,int c2) {
	int i; return true;
	for(i=1;i<=9;++i) if(ss[i]!=1) {
		
	}
}

int main() {
	int i,j,pas,i1,k1,i2,j1,iii1,ii1,i3;
	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[n+1]);
	for(i=1;i<=n;++i)
		for(j=1;j<=n;++j) {
			scanf("%d",&y[i][j]);
			y[i][j]+=y[i-1][j]+y[i][j-1]-y[i-1][j-1];
		}
	for(i=1;i<=n;++i) {
		for(iii1=1;iii1<=9;++iii1) {
			pas=1<<8;
			for(j=0;pas!=0;pas>>=1) {
				if(j+pas<=n && y[i][j+pas]<=s[iii1])
					j+=pas;
			}
			if(y[i][j]==s[iii1]) {
				ss[iii1]=1;
			}
			else
				break;
		}
		for(i1=1;i1<=9;++i1) if(ss[i1]!=1) {
			pas=1<<8;
			for(i2=0;pas!=0;pas>>=1) {
				if(i2+pas<=n && y[i2+pas][j]-y[i][j]<=s[i1])
					i2+=pas;
			}
			if(y[i2][j]==s[i1]) {
				ss[i1]=1;
			}
			else {
				ss[iii1]=0;
				break;
			}
		}
		for(ii1=1;ii1<=9;++ii1) if(ss[ii1]!=1) {
			pas=1<<8;
			for(i3=0;pas!=0;pas>>=1) {
				if(i3+pas<=n && y[i][i3+pas]-y[i][j]<=s[ii1])
					i3+=pas;
			}
			if(y[i][i3]==s[ii1]) {
				ss[ii1]=1;
			}
			else {
				ss[iii1]=0;
				s[i1]=0;
				break;
			}
		}
		if(ver(i,i2,j,i3)) {
			printf("%d %d %d %d",i,i2,j,i3);
			return 0;
		}
		ss[iii1]=0;
		s[i1]=0;
		ss[ii1]=1;
	}
	return 0;
}