Cod sursa(job #1648027)

Utilizator herbertoHerbert Mohanu herberto Data 10 martie 2016 23:40:32
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include<stdio.h>
#include<stdlib.h>
using namespace std;
#define MAXN 1001
#define MAXO 2000001
int lin[MAXN], col[MAXN], v[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=lin[b]; lin[b]=lin[e]; lin[e]=aux;
      aux=col[b]; col[b]=col[e]; col[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;
  fscanf(fin, "%d", &n);
  for(i=1; i<=n; i++){
    fscanf(fin, "%d %d", &lin[i], &col[i]);
    if(b!=0 && a!=0){
      a=abs(lin[i]);
      b=abs(col[i]);
      while(b>0){
        r=a%b;
        a=b;
        b=r;
      }
      lin[i]/=a;
      col[i]/=a;
    }
    else{
      if(a==0 && b==0){
        lin[0]=0; col[0]=MAXO;
        lin[i]=MAXO; col[i]=0;
      }
      else{
        if(a==0){
          lin[i]=0;
          col[i]=MAXO;
        }
        if(b==0){
          lin[i]=MAXO;
          col[i]=0;
        }
      }
    }
  }
  myqsort(0, n, lin);
  return 0;
}