- 金币游戏(gold)
求调
- @ 2025-7-8 20:43:18
hack.in:
20
E 17 29
E 30 12
N 29 2
E 8 19
N 43 6
N 23 21
N 34 37
E 24 15
E 13 26
N 20 46
N 5 25
E 27 36
N 32 45
E 14 43
E 37 8
E 28 38
E 3 1
E 49 32
E 26 18
N 36 44
wrong.out(括号内为正确结果):
26
13
41 (13)
35
30
22 (8)
Infinity
19
30 (10)
Infinity
Infinity
Infinity
Infinity
20
6
6
Infinity
Infinity
17
Infinity
#include <bits/stdc++.h>
int n, x, y, nn, en, NN[55], EE[55];
char c;
std::pair<int, int> N[55], E[55], P[55];
signed main()
{
std::freopen("gold.in", "r", stdin);
std::freopen("gold.out", "w", stdout);
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
getchar();
c = getchar();
scanf("%d %d", &x, &y);
if (c == 'N')
{
N[nn++] = {x, y};
}
else
{
E[en++] = {y, x};
}
P[i] = {x, y};
}
std::sort(N, N + nn);
std::sort(E, E + en);
for (int i = 0; i < nn; i++)
{
//printf("%d %d:\n", N[i].first, N[i].second);
for (int j = 0; j < en; j++)
{
//printf(" %d %d\n", E[j].second, E[j].first);
//printf(" %d %d\n", E[j].first - N[i].second, N[i].first - E[j].second);
if ((N[i].first - E[j].second > E[j].first - N[i].second) && (E[j].first - N[i].second > 0) && ((E[NN[i] - 1].first > E[j].first) || !(NN[i])))
{
EE[j] = i + 1;
}
else if ((N[i].first - E[j].second < E[j].first - N[i].second) && (N[i].first - E[j].second > 0) && ((N[EE[j] - 1].first > N[i].first) || !(EE[j])))
{
NN[i] = j + 1;
}
//printf(" %d %d\n", EE[j] - 1, NN[i] - 1);
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < nn; j++)
{
if (N[j].first == P[i].first)
{
if (NN[j])
{
printf("%d\n", E[NN[j] - 1].first - N[j].second);
//printf(" %d %d\n", E[NN[j] - 1].second, E[NN[j] - 1].first);
}
else
{
printf("Infinity\n");
}
//printf("%d %d\n", N[j].first, N[j].second);
//printf(" %d %d\n", E[NN[j] - 1].second, E[NN[j] - 1].first);
}
}
for (int j = 0; j < en; j++)
{
if (E[j].second == P[i].first)
{
if (EE[j])
{
printf("%d\n", N[EE[j] - 1].first - E[j].second);
//printf(" %d %d\n", N[EE[j] - 1].first, N[EE[j] - 1].second);
}
else
{
printf("Infinity\n");
}
//printf("%d %d\n", E[j].second, E[j].first);
//printf(" %d %d\n", N[EE[j] - 1].first, N[EE[j] - 1].second);
}
}
}
return 0;
}
并附上一张对于 hack 的自己画的图:

信息
- ID
- 9
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 93
- 已通过
- 13
- 上传者