SRM 613 Div1Easy TaroFriends
解法
与えられた配列をソートしたとき、要素 0 番目から順に見てある要素の猫までは右に進み、ある要素の猫からは左に進む。その区切りの位置を全探索する。
#include<bits/stdc++.h> using namespace std; #define INF (1<<29) #define ALL(x) (x).begin(), (x).end() #define REP(i,a,b) for(int i=a;i<b;i++) #define rep(i,n) REP(i,0,n) typedef vector<int> VI; class TaroFriends { public: int getNumber(vector <int> C, int X) { int const N = C.size(); sort(ALL(C)); int ans = INF; rep(i, N) { VI v(N); rep(j, i) { v[j] = C[j] + X; } REP(j, i, N) { v[j] = C[j] - X; } ans = min(ans, *max_element(ALL(v)) - *min_element(ALL(v))); } return ans; } };