Submission #258703

#TimeUsernameProblemLanguageResultExecution timeMemory
258703dolphingarlicTram (CEOI13_tram)C++14
0 / 100
1100 ms1160 KiB
#include <bits/stdc++.h> typedef long long ll; using namespace std; int n, m; bool used[150001][3]; pair<int, int> pos[30001]; set<int> hmmst; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m; hmmst.insert(1); hmmst.insert(n); for (int i = 1; i <= m; i++) { char c; cin >> c; if (c == 'E') { ll best_dist = 0; pair<int, int> best_pos; for (auto it = next(hmmst.begin()); it != hmmst.end(); it++) { int mid1 = (*it + *prev(it)) / 2, mid2 = (*it + *prev(it) + 1) / 2; vector<pair<int, int>> cand = { {*prev(it), 1}, {*prev(it), 2}, {mid1, 1}, {mid1, 2}, {mid2, 1}, {mid2, 2}, {*it, 1}, {*it, 2}}; for (pair<int, int> j : cand) { if (!used[j.first][j.second]) { double d = 1e18; bool available = false; for (pair<int, int> k : cand) { if (used[k.first][k.second]) { available = true; d = min(d, hypot(k.first - j.first, k.second - j.second)); } } if (d > best_dist && (available || hmmst.size() == 2)) { best_dist = d; best_pos = j; } } } } pos[i] = best_pos; used[pos[i].first][pos[i].second] = true; hmmst.insert(pos[i].first); cout << pos[i].first << ' ' << pos[i].second << '\n'; } else { int idx; cin >> idx; used[pos[idx].first][pos[idx].second] = false; if (pos[idx].first != 1 && pos[idx].first != n && !(used[pos[idx].first][0] || used[pos[idx].first][1])) hmmst.erase(pos[idx].first); } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...