Cod sursa(job #421196)

Utilizator b_ady20Branescu Adrian b_ady20 Data 21 martie 2010 12:17:16
Problema Copii Scor 0
Compilator cpp Status done
Runda Algoritmiada 2010, Runda 4, Clasele 9-10 Marime 0.88 kb
#include<cstdio>
using namespace std;
int i,n,j,s=0,cont,k,p;
char a[11][11],c;
bool oki=1,oki0=1;
int aranj(int n,int k);
int comb(int s,int n,int k);
int main(){
	freopen("copii.in","r",stdin);
	freopen("copii.out","w",stdout);
	scanf("%d",&n); 
	for(i=1;i<=n;++i){
		cont=0; scanf("%c",&c);
		for(j=1;j<=n;++j){
			scanf("%c",*(a+i)+j);
			if(a[i][j]=='1') ++cont;
		}
		if(cont!=1) oki=false;
		if(cont) oki0=false;
	}
	if(oki){ --s;
	if(n==2){ printf("%d",1); return 0;}}
	if(oki0) {printf("%d",0); return 0;}
	if(!oki&&n==2){ printf("%d",0); return 0;}
	for(k=1;k<=(n+1)/2;++k){
		p=aranj(n,k);
		p-=comb(p,n,k);
		s+=p;}
	printf("%d",s);
	return 0;
}
int aranj(int n, int k){
	int ar=1;
	for(i=k+1;i<=n;++i)
		ar=ar*i;
	return ar;
}
int comb(int s,int n, int k){
	int com=1,combin;
	for(i=2;i<=n-k;++i)
		com=com*i;
	combin=s/com;
	return combin;
}