Pyramid
問題
C – Pyramid
プログラミング初級者から上級者まで楽しめる、競技プログラミングコンテストサイト「AtCoder」。オンラインで毎週開催プログラミングコンテストを開催しています。競技…
記録
- 2022/4/11 解法わからず。
解法
- \(C_{x}\) と \(C_{y}\) は \(100\) 以下なので全探索できる。
- \(h_{i}\) が \(0\) 以外のとき、\(H\) を逆算することができる。
- 逆算した \(H\) をつかって、\(h_{i}\) を求めることができるかを全部確かめる。
コード例
#include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; using ll = long long; using P = pair<int, int>; #define rep(i, n) for(int i = 0; i < (n); ++i) // using mint = modint998244353; // using mint = modint1000000007; // const int mod = 1000000007; // const ll INF = 1LL << 60; // const int INF = 1001001001; int main() { int N; cin >> N; vector<ll> x(N); vector<ll> y(N); vector<ll> h(N); rep(i, N) { cin >> x[i] >> y[i] >> h[i]; } rep(i, 101) { ll C_x = ll(i); rep(j, 101) { ll C_y = ll(j); bool flg = true; ll H = 1; rep(k, N) { if(h[k] != 0) { H = h[k] + abs(x[k] - C_x) + abs(y[k] - C_y); } } rep(k, N) { ll h_ = max(H - abs(x[k] - C_x) - abs(y[k] - C_y), 0LL); if(h_ != h[k]) { flg = false; break; } } if(flg) { cout << i << " " << j << " " << H << endl; return 0; } } } return 0; }