Cod sursa(job #438479)

Utilizator p1tagoraCalin Pelcea p1tagora Data 10 aprilie 2010 20:01:05
Problema Gutui Scor 0
Compilator cpp Status done
Runda teme_upb Marime 1.84 kb
#include<stdlib.h>
#include<stdio.h>

int partition(int v[2][100000],int left,int right,int index)
{
    int pivotValue=v[0][index];
    int aux,i;
    
    aux=v[0][right];
    v[0][right]=v[0][index];
    v[0][index]=aux;
    
    aux=v[1][right];
    v[1][right]=v[1][index];
    v[1][index]=aux;

    int storeIndex=left;
    for (i=left;i<right;i++)
        if (v[0][i]<pivotValue)
           {
           aux=v[0][i];
           v[0][i]=v[0][storeIndex];
           v[0][storeIndex]=aux;
           
           aux=v[1][i];
           v[1][i]=v[1][storeIndex];
           v[1][storeIndex]=aux;
           
           storeIndex++;         
           }
    
    aux=v[0][storeIndex];
    v[0][storeIndex]=v[0][right];
    v[0][right]=aux;
    
    aux=v[1][storeIndex];
    v[1][storeIndex]=v[1][right];
    v[1][right]=aux;
    
    return storeIndex;
}

void quicksort(int v[2][100000],int left,int right)
{
     int pivot,pivotNew;
     if (left<right)
        {
        pivot=(left+right)/2;
        pivotNew=partition(v,left,right,pivot);
        quicksort(v,left,pivotNew-1);
        quicksort(v,pivotNew+1,right);
        }
}

int main()
{
    FILE *f,*o;
    f=fopen("gutui.in","r");
    o=fopen("gutui.out","w");
    
    int N,H,U;
    
    fscanf(f,"%i",&N);
    fscanf(f,"%i",&H);
    fscanf(f,"%i",&U);
    
    int i=0,g,h,j=0;
    int v[2][100000],mark[100000];
        
    while (fscanf(f,"%i%i",&h,&g)!=EOF)
          {
          v[0][i]=h/U;
          v[1][i]=g;
          i++;
          }
    quicksort(v,0,N-1);
    
    for (i=0;i<N;i++)
        fprintf(o,"%i %i\n",v[0][i],v[1][i]);
    
    /*int max=0,pmax,sum=0,H2=0;
    for (i=0;i<N;i++)
        {
        
        }
    
    fprintf(o,"%i\n",sum);*/
    
    fclose(f);
    fclose(o);
    
    return 0;
}