提出 #64680756
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (long long i = 0; i < (n); i++)
// #define DEBUG
const int MAX_N = 15;
long long X[MAX_N], Y[MAX_N];
long long N, K;
long long ans = LONG_LONG_MAX;
// K < N なのでNで初期化しちゃう
vector<int> points[MAX_N];
long long findMaxDist()
{
long long maxDist = 0;
// 最大距離を求める処理
for (int id = 0; id < K; id++)
{
auto group = points[id];
if (group.size() < 1)
{
// 1点の場合、距離はない
continue;
}
// 距離を求める
for (int i = 0; i < group.size() - 1; i++)
{
for (int j = i + 1; j < group.size(); j++)
{
int p1 = group[i];
int p2 = group[j];
long long dx = X[p1] - X[p2];
long long dy = Y[p1] - Y[p2];
long long dist = dx * dx + dy * dy;
maxDist = max(dist, maxDist);
}
}
}
return maxDist;
}
void dfs(
int n, // 点の番号
int k, // 今使っている箱の数
int target // 入れたい箱の番号
)
{
// 存在しない箱なので終了
if (K <= target)
{
return;
}
// K - k 未使用の箱
// N - n + 1 残りのボール数
// どんな入れ方でも条件を満たさない
if (N - n + 1 < K - k)
{
return;
}
// 箱iに点を追加
points[target].push_back(n);
if (n + 1 == N)
{
if (k == K)
{
long long maxDist = findMaxDist();
ans = min(ans, maxDist);
}
}
else
{
// 箱の数は変えずに、次の点を今までの箱に追加
for (int j = 0; j <= k; j++)
{
dfs(n + 1, k, j);
}
// 新しい箱を用意して投入
dfs(n + 1, k + 1, k);
}
// 上の階に戻るので、入れた値を削除
auto it = lower_bound(
points[target].begin(),
points[target].end(),
n);
points[target].erase(it);
}
int main()
{
#ifdef DEBUG
freopen("input/in.txt", "r", stdin);
#endif
cin >> N >> K;
rep(i, N)
{
cin >> X[i] >> Y[i];
}
// 0の点を0の箱に追加
dfs(0, 1, 0);
cout << ans << endl;
return 0;
}
提出情報
コンパイルエラー
Main.cpp: In function ‘long long int findMaxDist()’:
Main.cpp:32:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
32 | for (int i = 0; i < group.size() - 1; i++)
| ~~^~~~~~~~~~~~~~~~~~
Main.cpp:34:35: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
34 | for (int j = i + 1; j < group.size(); j++)
| ~~^~~~~~~~~~~~~~
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
6 / 6 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
sample01.txt, sample02.txt, sample03.txt, sample04.txt |
| All |
dense00.txt, dense01.txt, dense02.txt, dense03.txt, mid_random00.txt, mid_random01.txt, mid_random02.txt, mid_random03.txt, mid_random04.txt, mid_random05.txt, random00.txt, random01.txt, random02.txt, random03.txt, random04.txt, random05.txt, random06.txt, sample01.txt, sample02.txt, sample03.txt, sample04.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| dense00.txt |
AC |
16 ms |
3372 KiB |
| dense01.txt |
AC |
17 ms |
3376 KiB |
| dense02.txt |
AC |
1 ms |
3460 KiB |
| dense03.txt |
AC |
14 ms |
3456 KiB |
| mid_random00.txt |
AC |
17 ms |
3372 KiB |
| mid_random01.txt |
AC |
1 ms |
3368 KiB |
| mid_random02.txt |
AC |
1 ms |
3440 KiB |
| mid_random03.txt |
AC |
1 ms |
3500 KiB |
| mid_random04.txt |
AC |
469 ms |
3396 KiB |
| mid_random05.txt |
AC |
1 ms |
3464 KiB |
| random00.txt |
AC |
102 ms |
3488 KiB |
| random01.txt |
AC |
17 ms |
3460 KiB |
| random02.txt |
AC |
658 ms |
3488 KiB |
| random03.txt |
AC |
2 ms |
3460 KiB |
| random04.txt |
AC |
14 ms |
3468 KiB |
| random05.txt |
AC |
1 ms |
3492 KiB |
| random06.txt |
AC |
7 ms |
3496 KiB |
| sample01.txt |
AC |
1 ms |
3504 KiB |
| sample02.txt |
AC |
1 ms |
3440 KiB |
| sample03.txt |
AC |
13 ms |
3456 KiB |
| sample04.txt |
AC |
1 ms |
3504 KiB |