제출 #258700

#제출 시각아이디문제언어결과실행 시간메모리
258700dolphingarlicTram (CEOI13_tram)C++14
0 / 100
18 ms748 KiB
/* CEOI 2013 Tram - Medians */ #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> interesting; ll dist(pair<int, int> A, pair<int, int> B) { return ll(B.first - A.first) * ll(B.first - A.first) + ll(B.second - A.second) * ll(B.second - A.second); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m; interesting.insert(1); interesting.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(interesting.begin()); it != interesting.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]) { ll d = LLONG_MAX; bool available = false; for (pair<int, int> k : cand) if (used[k.first][k.second]) { available = true; d = min(d, dist(j, k)); } if (d > best_dist && available) { best_dist = d; best_pos = j; } } } pos[i] = best_pos; used[pos[i].first][pos[i].second] = true; interesting.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])) interesting.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...