Cod sursa(job #1649763)

Utilizator herbertoHerbert Mohanu herberto Data 11 martie 2016 14:59:11
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include<stdio.h>
#include<stdlib.h>
using namespace std;
#define MAXN 1001
#define MAXO 2000001
int lin[MAXN], col[MAXN], v[MAXN], pl[MAXN*MAXN], pc[MAXN];
float panta[MAXN];
void myqsort(int begin, int end, int *v){
  int b=begin, e=end, pivot=v[(begin+end)/2], aux;
  while(b<e){
    while(v[b]<pivot) b++;
    while(v[e]>pivot) e--;
    if(b<=e){
      aux=pl[b]; pl[b]=pl[e]; pl[e]=aux;
      aux=pc[b]; pc[b]=pc[e]; pc[e]=aux;
      b++;
      e--;
    }
  }
  if(b<end) myqsort(b, end, v);
  if(begin<e) myqsort(begin, e, v);
}

int main(){
  FILE*fin=fopen("trapez.in", "r");
  FILE*fout=fopen("trapez.out", "w");
  int n, i, a, b, r, m, k, j;
  fscanf(fin, "%d", &n);
  for(i=1; i<=n; i++)
    fscanf(fin, "%d%d", &lin[i], &col[i]);

  k=0;
  for(i=1; i<=n; i++)
    for(j=i+1; j<=n; j++){
      k++;
//      printf("%d %d\n", lin[i], col[i]);
      a=abs(lin[i]-lin[j]);
      b=abs(col[i]-col[j]);
      if(b!=0 && a!=0){
        while(b>0){
          r=a%b;
          a=b;
          b=r;
        }
        pl[k]=(lin[i]-lin[j])/a;
        pc[k]=(col[i]-col[j])/a;
      }
      else{
        if(a==0){
          pl[k]=0;
          pc[k]=MAXO;
        }
        if(b==0){
          pl[k]=MAXO;
          pc[k]=0;
        }
      }
    }

  m=k;
//  myqsort(1, m, pl);
  for(i=1; i<=m; i++)
    printf("%d %d\n", pl[i], pc[i]);
  return 0;
}