Cod sursa(job #110622)

Utilizator gr33nhumbVoicu Gabriel gr33nhumb Data 27 noiembrie 2007 00:53:16
Problema Pairs Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include<fstream.h>
#include<math.h>

long long v[100001];
long nr;

 int euclid(long a, long b)
{
    long c;
    while (b) {
	c = a % b;
	a = b;
	b = c;
    }
    c=a; return c;
}

int binar(long m, int x, int y){
int i,t;
if(m==v[x] || m==v[y]) return 0;
if(m>=v[y]){  for(i=nr;i>=y;i--) v[i+1]=v[i];
	       ++nr;
	       v[y+1]=m;
	      return 1;}
if(m<=v[x]){ for(i=nr;i>=x;i--) v[i+1]=v[i];
	      ++nr;
	      v[x]=m;
	      return 1;
	      }
  while(y>x){
   t=(y+x)/2;
    if(v[t]==m) return 0;
    if(m<v[t]) y=t-1;
     else x=t+1;
     if(m==v[x]) return 0;
     if(m==v[y]) return 0;
     }
    if(m<=v[x] && m!=v[x]) { for(i=nr;i>=x;i--) v[i+1]=v[i];
	       ++nr;
	       v[x]=m;
	      return 1;}
    else { if(m==v[x] || m==v[y]) return 0;
	   for(i=nr;i>=y;i--) v[i+1]=v[i];
	       ++nr;
    v[y+1]=m;
	      return 1;}

 }




int main(){
 long i,j,n,ct=0,p;

ifstream f("pairs.in");
ofstream g("pairs.out");
  f>>n;
  for(i=1;i<=n;i++){   f>>p;
		       binar(p,1,nr);
		   }
  for(i=1;i<=nr;i++){
   for(j=i+1;j<=nr;j++){
    if(v[i]%2==0 && v[j]%2==0) continue;
     else if(euclid(v[i],v[j])==1) ++ct;

   }
 }
g<<ct;
f.close();
g.close();
return 0;
}