Cod sursa(job #109345)

Utilizator swift90Ionut Bogdanescu swift90 Data 25 noiembrie 2007 10:20:05
Problema Pairs Scor 20
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasa a 10-a Marime 0.88 kb
#include<stdio.h>
int nr[100010];
int euclid(int a,int b){
	if(b==0)
		return 0;
	else{
		if(b==1)
			return 1;
		else
			return euclid(b,a%b);
	}
}
int main(){
	freopen("pairs.in","r",stdin);
	freopen("pairs.out","w",stdout);
	int n,i,j,sum,a,p,imp;
	
	scanf("%d",&n);
	a=0;
	j=100000;
	for(i=0;i<n;++i){
		scanf("%d",&sum);
		if(sum%2)
			nr[j--]=sum;
		else
			nr[a++]=sum;
	}
	p=a;
	imp=j+1;
	sum=0;
	for(i=0;i<p;++i){
		a=nr[i];
		for(j=imp;j<=100000;++j){
			if(a>nr[j]){
				if(euclid(a,nr[j]))
					++sum;
			}
			else{
				if(euclid(nr[j],a))
					++sum;
			}
		}
	}
	
	for(i=imp;i<=100000;++i){
		a=nr[i];
		for(j=i+1;j<=100000;++j){
			if(a>nr[j]){
				if(euclid(a,nr[j]))
					++sum;
			}
			else{
				if(euclid(nr[j],a))
					++sum;
			}
		}
	}
	
	printf("%d\n",sum);
	
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}