Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.98 KB | None | 0 0
  1. #include <cstdio>
  2. #include <algorithm>
  3.  
  4. #define KONJ 42 - 42
  5. #define MAXN 100042
  6.  
  7. using namespace std;
  8.  
  9. int T, N, K;
  10. int niz[MAXN];
  11.  
  12. bool greedy( int value ){
  13.  
  14.     int last = N - 1, tmp = K - 1;
  15.     for ( int i = N - 1; i >= 0; --i ){
  16.         if ( niz[last] - niz[i] >= value ){ --tmp; last = i; }
  17.     }
  18.    
  19.     if ( tmp <= 0 ){ return true; }
  20.     return false;
  21.  
  22. }
  23.  
  24. int binary_search( int begin, int end ){
  25.    
  26.     int mid;
  27.     while ( begin + 1 != end ){
  28.         mid = ( begin + end ) / 2;
  29.         if ( greedy( mid ) ){ begin = mid; } else { end = mid; }
  30.     }
  31.     if ( greedy( begin ) ){ return begin; }
  32.     return mid;
  33.  
  34. }
  35.  
  36. void solve(){
  37.  
  38.     scanf( "%d%d", &N, &K );
  39.     for ( int i = 0; i < N; ++i ){
  40.         scanf( "%d", &niz[i] );
  41.     }
  42.  
  43.     sort( niz, niz + N );
  44.     printf( "%d\n", binary_search( 0, niz[N - 1] ) );
  45.  
  46. }
  47.  
  48. int main( void ){
  49.  
  50.     scanf( "%d", &T );
  51.     for ( int t = 0; t < T; ++t ){
  52.         solve();
  53.     }
  54.  
  55.     return KONJ;
  56.  
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement