Cod sursa(job #774390)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 4 august 2012 15:57:44
Problema Koba Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.73 kb
#include<iostream>
#include<fstream>
using namespace std;
int a[101][101],v[10001],lin[101],col[101];
inline int verifica(int n, int sum)
{
	int i;
	for(i=1;i<=n;i++) {
		if(a[i][0]!=sum)
			lin[++lin[0]]=i;
		if(a[0][i]!=sum)
			col[++col[0]]=i;
	}
	if(col[0] || lin[0])
		return 0;
	return 1;
}
int main ()
{
	int n,i,j,poz,sum,i1,i2,j1,j2,val1,val2;
	ifstream f("magic2.in");
	ofstream g("magic2.out");
	f>>n;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			f>>a[i][j];
	f.close();
	for(i=1;i<=n;i++) 
		for(j=1;j<=n;j++) {
			a[0][j]=a[0][j]+a[i][j];
			a[i][0]=a[i][0]+a[i][j];
		}
	for(i=1;i<=n;i++) {
		v[a[i][0]]++;
		v[a[0][i]]++;
	}
	poz=0;
	for(i=1;i<=10000;i++)
		if(v[poz]<v[i]) 
			poz=i;
	sum=poz;
	if(verifica(n,sum)) {
		g<<"magic"<<'\n';
		i1=-1;
	}
	else if(lin[0]==1 && col[0]==2) {
		i1=lin[1];
		i2=lin[1];
		j1=col[1];
		j2=col[2];
		val1=a[i1][j1]+sum-a[0][j1];
		val2=a[i2][j2]+sum-a[0][j2];
	}
	else if(lin[0]==2 && col[0]==1) {
		i1=lin[1];
		i2=lin[2];
		j1=col[1];
		j2=col[1];
		val1=a[i1][j1]+sum-a[i1][0];
		val2=a[i2][j2]+sum-a[i2][0];
	}
	else if(lin[0]==2 && col[0]==2) {
		i1=lin[1];
		i2=lin[2];
		j1=col[1];
		j2=col[2];
		val1=a[i1][j1]+sum-a[i1][0];
		val2=a[i2][j2]+sum-a[i2][0];
		if(a[0][j1]-a[i1][j1]+val1!=sum || a[0][j2]-a[i2][j2]+val2!=sum) {
			i1=lin[1];
			i2=lin[2];
			j1=col[2];
			j2=col[1];
			val1=a[i1][j1]+sum-a[i1][0];
			val2=a[i2][j2]+sum-a[i2][0];
		}
	}
	else if(lin[0]==1 && col[0]==1) {
		i1=lin[1];
		i2=lin[1];
		j1=lin[1];
		j2=col[1];
		val1=a[i1][j1]+sum-a[i1][0];
		val2=val1;
	}
	if(i1!=-1) {
		g<<"nu este magic"<<'\n';
		g<<i1<<" "<<j1<<" "<<i2<<" "<<j2<<'\n';
		g<<val1<<" "<<val2<<'\n';
	}
	g.close();
	return 0;
}