문제
링크
풀이
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
inline int calc1(vector<int> v, int idx) {
int d = idx < 2 ? v[idx+2] - v[idx+1] : v[idx-1] - v[idx-2];
v[idx] = idx < 2 ? v[idx+1] - d : v[idx-1] + d;
if (v[idx] <= 0 || v[idx] > 10000) return -1;
for (int i=1; i<v.size(); i++) {
if (v[i] != v[i-1] + d) return -1;
}
return v[idx];
}
inline int calc2(vector<int> v, int idx) {
int d = idx < 2 ? v[idx+2] / v[idx+1] : v[idx-1] / v[idx-2];
v[idx] = idx < 2 ? v[idx+1] / d : v[idx-1] * d;
if (v[idx] <= 0 || v[idx] > 10000) return -1;
for (int i=1; i<v.size(); i++) {
if (v[i] != v[i-1] * d) return -1;
}
return v[idx];
}
bool solve(void) {
vector<int> v(4);
for (int i=0; i<4; i++) cin >> v[i];
if (v[0] == -1 && v[1] == -1 && v[2] == -1 && v[3] == -1) return false;
int idx = 0;
for (int i=0; i<4; i++) {
if (v[i] == -1) idx = i;
}
cout << max(calc1(v, idx), calc2(v, idx)) << "\n";
return true;
}
int main(void) {
ios::sync_with_stdio(false);
cin.tie(nullptr);
while (solve());
return 0;
}