Advertisement
IlidanBabyRage

nails.cpp

Jul 7th, 2015
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.08 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <cstdio>
  4.  
  5. using namespace std;
  6.  
  7. void qsort(int a[100], int l, int r);
  8.  
  9. int main(){
  10.    
  11.     int MAX = 10010;
  12.  
  13.     int ar[100];
  14.     int n;
  15.     cin >> n;
  16.     for (int i = 0; i < n; i++)
  17.         cin >> ar[i];
  18.  
  19.     if (n == 2){
  20.         cout << abs(ar[1] - ar[0]) << endl;
  21.         return 0;
  22.     }
  23.  
  24.     qsort(ar, 0, n - 1);
  25.  
  26.  
  27.     int ans[101], a1, a2;
  28.     ans[0] = ar[1] - ar[0];
  29.     ans[1] = ans[1] + ar[2] - ar[1];
  30.  
  31.     for (int i = 2; i < n; i++){
  32.         a1 = ans[i - 1] + (ar[i] - ar[i - 1]);
  33.         a2 = ans[i - 2] + (ar[i] - ar[i - 1]);
  34.         if (a1 < a2)
  35.             ans[i] = a1;
  36.         else
  37.             ans[i] = a2;
  38.     }
  39.  
  40.     cout << ans[n - 1] << endl;
  41.  
  42.     return 0;
  43. }
  44.  
  45. void qsort(int a[100], int l, int r){
  46.     int m = a[(l + r) / 2];
  47.     int i = l, j = r;
  48.     do {
  49.         while (a[i] < m)
  50.             i++;
  51.         while (a[j] > m)
  52.             j--;
  53.         if (i <= j){
  54.             if (a[i] > a[j])
  55.                 std::swap(a[i], a[j]);
  56.             i++;
  57.             j--;
  58.         }
  59.     } while(i <= j);
  60.     if (i < r)
  61.         qsort(a, i, r);
  62.     if (j > l)
  63.         qsort(a, l, j);
  64. }
  65.  
  66.  
  67. //  ---*-*--*------*-*-*
  68. //    0*1*  2*    3*4*5*
  69.  
  70. //  ---*-*--*--*-*-*
  71. //    0*1* 2* 3*4*5*
  72. //    0*1* 3* 3*4*5*
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement