結果
| 問題 |
No.1265 Balloon Survival
|
| コンテスト | |
| ユーザー |
packer_jp
|
| 提出日時 | 2020-10-23 22:23:54 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 714 ms / 2,000 ms |
| コード長 | 3,845 bytes |
| コンパイル時間 | 2,652 ms |
| コンパイル使用メモリ | 208,052 KB |
| 最終ジャッジ日時 | 2025-01-15 13:21:40 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 32 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i, n) for (int i = 0; i < (int) (n); i++)
#define reps(i, n) for (int i = 1; i <= (int) (n); i++)
#define all(a) (a).begin(), (a).end()
#define uniq(a) (a).erase(unique(all(a)), (a).end())
#define bit(n) (1LL << (n))
#define dump(a) cerr << #a " = " << (a) << endl
using vint = vector<int>;
using pint = pair<int, int>;
using vpint = vector<pint>;
template<typename T> using priority_queue_rev = priority_queue<T, vector<T>, greater<T>>;
constexpr double PI = 3.1415926535897932384626433832795028;
constexpr int DY[9] = {0, 1, 0, -1, 1, 1, -1, -1, 0};
constexpr int DX[9] = {1, 0, -1, 0, 1, -1, -1, 1, 0};
int sign(int a) { return (a > 0) - (a < 0); }
int cdiv(int a, int b) { return (a - 1 + b) / b; }
template<typename T> void fin(T a) {
cout << a << endl;
exit(0);
}
template<typename T> T sq(T a) { return a * a; }
template<typename T, typename U> bool chmax(T &a, const U &b) {
if (a < b) {
a = b;
return true;
}
return false;
}
template<typename T, typename U> bool chmin(T &a, const U &b) {
if (b < a) {
a = b;
return true;
}
return false;
}
template<typename T, typename U> ostream &operator<<(ostream &os, const pair<T, U> &a) {
os << "(" << a.first << ", " << a.second << ")";
return os;
}
template<typename T, typename U, typename V> ostream &operator<<(ostream &os, const tuple<T, U, V> &a) {
os << "(" << get<0>(a) << ", " << get<1>(a) << ", " << get<2>(a) << ")";
return os;
}
template<typename T> ostream &operator<<(ostream &os, const vector<T> &a) {
os << "{";
for (auto itr = a.begin(); itr != a.end(); itr++) {
os << *itr << (next(itr) != a.end() ? ", " : "");
}
os << "}";
return os;
}
template<typename T> ostream &operator<<(ostream &os, const deque<T> &a) {
os << "{";
for (auto itr = a.begin(); itr != a.end(); itr++) {
os << *itr << (next(itr) != a.end() ? ", " : "");
}
os << "}";
return os;
}
template<typename T> ostream &operator<<(ostream &os, const set<T> &a) {
os << "{";
for (auto itr = a.begin(); itr != a.end(); itr++) {
os << *itr << (next(itr) != a.end() ? ", " : "");
}
os << "}";
return os;
}
template<typename T> ostream &operator<<(ostream &os, const multiset<T> &a) {
os << "{";
for (auto itr = a.begin(); itr != a.end(); itr++) {
os << *itr << (next(itr) != a.end() ? ", " : "");
}
os << "}";
return os;
}
template<typename T, typename U> ostream &operator<<(ostream &os, const map<T, U> &a) {
os << "{";
for (auto itr = a.begin(); itr != a.end(); itr++) {
os << *itr << (next(itr) != a.end() ? ", " : "");
}
os << "}";
return os;
}
struct setup {
static constexpr int PREC = 20;
setup() {
cout << fixed << setprecision(PREC);
cerr << fixed << setprecision(PREC);
};
} setup;
signed main() {
int N;
cin >> N;
vint x(N), y(N);
rep(i, N) { cin >> x[i] >> y[i]; }
int ans = LLONG_MAX;
rep(i, N) {
vector<bool> used(N - i);
vector<tuple<int, int, int>> dab;
rep(j, N - i) {
rep(k, j) {
dab.emplace_back(sq(x[j] - x[k]) + sq(y[j] - y[k]), k, j);
}
}
sort(all(dab));
int del = -1;
for (auto[d, a, b]:dab) {
if (used[a] || used[b]) { continue; }
used[a] = used[b] = true;
if (a != 0) { continue; }
del = b;
break;
}
chmin(ans, N - accumulate(all(used), 0LL) + 1);
if (del == -1) {
chmin(ans, N - accumulate(all(used), 0LL) - 1);
break;
}
swap(x[del], x[N - i - 1]);
swap(y[del], y[N - i - 1]);
}
cout << ans << endl;
}
packer_jp