POJ 2456
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 using namespace std; 5 6 unsigned int N; 7 unsigned int C; 8 vector<int> x; 9 int stall; 10 11 int main() 12 { 13 /***************************************************/ 14 //input and preprocessing 15 16 cin >> N >> C; 17 for(int i = 0; i < N; ++i) 18 { 19 int temp; 20 cin >> temp; 21 x.push_back(temp); 22 } 23 sort(x.begin(), x.end()); 24 25 26 /***************************************************/ 27 //solver 28 int lower = 0; 29 int upper = 1000000000; 30 int mid; 31 while(upper - lower > 1) 32 { 33 mid = (upper + lower) / 2; 34 35 /***************************************************/ 36 //calc 37 stall = 1; 38 for(int i = 0, j = 0; i < x.size(); ) 39 { 40 if(x[i] - x[j] >= mid) 41 { 42 ++stall; 43 j = i; 44 ++i; 45 } 46 else 47 { 48 ++i; 49 } 50 51 } 52 //end calc 53 /***************************************************/ 54 if(stall >= C) 55 lower = mid; 56 else 57 upper = mid; 58 } 59 60 /***************************************************/ 61 //output 62 63 cout << lower << endl; 64 return 0; 65 }