#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; #define FOR(i,a,b) for(ll i=(a);i<(b);++i) #define ALL(v) (v).begin(), (v).end() #define p(s) cout<<(s)<g){ swap(r, g); } ll b = 0; // rを十分作る if(r0){ // bを十分作る g -= 2 * diff; } if(g>=num){ return true; }else{ return false; } } int main(){ cin.tie(0); ios::sync_with_stdio(false); // input vector A(3); FOR(i, 0, 3){ cin >> A[i]; } sort(ALL(A)); ll num = A[0]; ll r = A[1] - A[0]; ll g = A[2] - A[0]; // 追加で何個作れるかを二分探索 ll left = 0; ll right = 10000000; while(left+1!=right){ ll center = (left+right)/2; if(can_make(r, g, center)){ left = center; }else{ right = center; } } p(num + left); return 0; }