Advertisement
Guest User

Untitled

a guest
Sep 16th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.65 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void swap(int *a, int *b)
  5. {
  6.     int temp;
  7.     temp=*a;
  8.     *a=*b;
  9.     *b=temp;
  10. }
  11. int partition(int arr[], int first, int last)
  12. {
  13.     int pivot = arr[last];
  14.     int low = first;
  15.     int i = first;
  16.     while(i <= last-1 ){
  17.         if(arr[i] < pivot){
  18.             swap(&arr[i], &arr[low]);
  19.             low++;
  20.         }
  21.         i++;
  22.     }
  23.     swap(&arr[last], &arr[low]);
  24.    
  25.     return low;
  26. }
  27.  
  28. void quick_sort(int arr[], int first, int last)
  29. {
  30.     int pivot_pos;
  31.     if(first < last){
  32.         pivot_pos = partition(arr, first, last);
  33.         quick_sort(arr, first, pivot_pos-1);
  34.         quick_sort(arr, pivot_pos+1, last);
  35.     }
  36. }
  37.  
  38. int funcao_comparacao (const void * a, const void * b) {
  39.    return ( *(int*)a - *(int*)b );
  40. }
  41.  
  42. int main()
  43. {
  44.     int num_predios, num_vendas;
  45.     // int distancias[100000];
  46.     scanf("%d %d", &num_predios, &num_vendas);
  47.     int* distancias;
  48.  
  49.     distancias = (int*) malloc(num_predios * sizeof(int));
  50.     int num_predios_apos_venda = num_predios - num_vendas;
  51.  
  52.     for (int i = 0; i < num_predios; i++)
  53.     {
  54.         scanf("%d", &distancias[i]);
  55.     }
  56.  
  57.     quick_sort(distancias,0,num_predios-1);
  58.     // qsort(distancias, num_predios, sizeof(int), funcao_comparacao);
  59.  
  60.     int menor_distancia = 999999999;
  61.  
  62.     for (int i = 0; i + num_predios_apos_venda <= num_predios; i++)
  63.     {
  64.       if (distancias[i + num_predios_apos_venda - 1] - distancias[i] < menor_distancia)
  65.       {
  66.         menor_distancia = distancias[i + num_predios_apos_venda - 1] - distancias[i];
  67.       }
  68.        
  69.     }
  70.  
  71.     printf("%d\n", menor_distancia);
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement