QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#650882 | #4776. Smoking gun | SGColin# | WA | 0ms | 3508kb | C++20 | 2.2kb | 2024-10-18 17:00:12 | 2024-10-18 17:00:14 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> pii;
#define eb emplace_back
#define all(s) (s).begin(), (s).end()
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define per(i, a, b) for (int i = (a); i >= (b); --i)
const int N = 107;
double t[N][N], dis[N][N];
bool use[N];
inline void work() {
int n, m;
cin >> n >> m;
vector<string> nam; nam.eb("");
map<string, int> id;
vector<pii> cor(n + 1);
vector<int> fires;
rep(i, 1, n) {
string str; cin >> str;
id[str] = i;
nam.eb(str);
use[i] = false;
int x, y; cin >> x >> y;
cor[i] = {x, y};
}
rep(i, 1, n) rep(j, 1, n) {
t[i][j] = (i == j ? 0 : 1e18);
auto [x1, y1] = cor[i];
auto [x2, y2] = cor[j];
dis[i][j] = sqrt(1.0 * (x1 - x2) * (x1 - x2) + 1.0 * (y1 - y2) * (y1 - y2));
}
rep(i, 1, m) {
string str; cin >> str; while (str == "") cin >> str;
int a = id[str];
cin >> str; cin >> str;
int b = id[str];
cin >> str; cin >> str; cin >> str;
int c = id[str];
double dif = (dis[c][a] - dis[b][a]) / 340;
t[b][c] = min(t[b][c], dif);
fires.eb(b);
fires.eb(c);
}
sort(all(fires));
fires.erase(unique(all(fires)), fires.end());
rep(k, 1, n) rep(i, 1, n) rep(j, 1, n) t[i][j] = min(t[i][j], t[i][k] + t[k][j]);
rep(i, 1, n) if (t[i][i] < 0) {puts("IMPOSSIBLE"); return;}
vector<string> ans;
rep(turn, 1, fires.size()) {
int id = 0;
for (auto j : fires) if (!use[j]) {
bool fl = true;
for (auto k : fires) {
if (!use[k] && k != j) {
if (t[j][k] > 0) {fl = false; break;}
}
}
if (fl) {id = j; break;}
}
if (id) {ans.eb(nam[id]); use[id] = true;}
else {puts("UNKNOWN"); return;}
}
reverse(all(ans));
for (auto x : ans) cout << x << " ";
cout << endl;
}
int main() {
cin.tie(0);
ios::sync_with_stdio(false);
int t; cin >> t;
while (t--) work();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3508kb
input:
3 4 2 BillyTheKid 0 0 Andy 10 0 John 19 0 Larry 20 0 Andy heard BillyTheKid firing before John Larry heard John firing before BillyTheKid 2 2 Andy 0 0 Beate 0 1 Andy heard Beate firing before Andy Beate heard Andy firing before Beate 3 1 Andy 0 0 Beate 0 1 Charles 1 3 Beate heard Andy firing before ...
output:
John BillyTheKid IMPOSSIBLE UNKNOWN
result:
wrong answer 1st lines differ - expected: 'BillyTheKid John', found: 'John BillyTheKid '