結果
問題 | No.5017 Tool-assisted Shooting |
ユーザー | matsup10 |
提出日時 | 2023-07-16 19:46:55 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 92 ms / 2,000 ms |
コード長 | 4,019 bytes |
コンパイル時間 | 6,616 ms |
コンパイル使用メモリ | 329,712 KB |
実行使用メモリ | 24,456 KB |
スコア | 183,057 |
平均クエリ数 | 1000.00 |
最終ジャッジ日時 | 2023-07-16 19:47:15 |
合計ジャッジ時間 | 18,253 ms |
ジャッジサーバーID (参考情報) |
judge9 / judge13 |
純コード判定しない問題か言語 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 55 ms
23,664 KB |
testcase_01 | AC | 92 ms
24,420 KB |
testcase_02 | AC | 57 ms
23,652 KB |
testcase_03 | AC | 83 ms
23,436 KB |
testcase_04 | AC | 82 ms
24,048 KB |
testcase_05 | AC | 51 ms
24,240 KB |
testcase_06 | AC | 83 ms
24,276 KB |
testcase_07 | AC | 52 ms
24,324 KB |
testcase_08 | AC | 83 ms
23,652 KB |
testcase_09 | AC | 50 ms
23,664 KB |
testcase_10 | AC | 56 ms
24,060 KB |
testcase_11 | AC | 53 ms
23,868 KB |
testcase_12 | AC | 51 ms
23,400 KB |
testcase_13 | AC | 89 ms
24,240 KB |
testcase_14 | AC | 84 ms
23,424 KB |
testcase_15 | AC | 50 ms
23,400 KB |
testcase_16 | AC | 83 ms
24,276 KB |
testcase_17 | AC | 50 ms
24,048 KB |
testcase_18 | AC | 83 ms
23,640 KB |
testcase_19 | AC | 52 ms
23,556 KB |
testcase_20 | AC | 85 ms
23,664 KB |
testcase_21 | AC | 83 ms
23,544 KB |
testcase_22 | AC | 82 ms
24,036 KB |
testcase_23 | AC | 83 ms
23,544 KB |
testcase_24 | AC | 51 ms
23,400 KB |
testcase_25 | AC | 90 ms
23,640 KB |
testcase_26 | AC | 55 ms
24,312 KB |
testcase_27 | AC | 82 ms
23,400 KB |
testcase_28 | AC | 88 ms
23,568 KB |
testcase_29 | AC | 52 ms
23,412 KB |
testcase_30 | AC | 51 ms
23,532 KB |
testcase_31 | AC | 82 ms
23,556 KB |
testcase_32 | AC | 76 ms
24,048 KB |
testcase_33 | AC | 84 ms
23,532 KB |
testcase_34 | AC | 53 ms
24,036 KB |
testcase_35 | AC | 84 ms
23,424 KB |
testcase_36 | AC | 92 ms
23,652 KB |
testcase_37 | AC | 91 ms
23,412 KB |
testcase_38 | AC | 56 ms
24,060 KB |
testcase_39 | AC | 84 ms
23,544 KB |
testcase_40 | AC | 83 ms
23,568 KB |
testcase_41 | AC | 83 ms
23,664 KB |
testcase_42 | AC | 84 ms
24,420 KB |
testcase_43 | AC | 82 ms
23,388 KB |
testcase_44 | AC | 84 ms
24,240 KB |
testcase_45 | AC | 50 ms
24,024 KB |
testcase_46 | AC | 50 ms
24,048 KB |
testcase_47 | AC | 92 ms
24,024 KB |
testcase_48 | AC | 83 ms
23,628 KB |
testcase_49 | AC | 83 ms
23,544 KB |
testcase_50 | AC | 52 ms
24,348 KB |
testcase_51 | AC | 80 ms
23,412 KB |
testcase_52 | AC | 84 ms
24,264 KB |
testcase_53 | AC | 51 ms
23,388 KB |
testcase_54 | AC | 86 ms
23,400 KB |
testcase_55 | AC | 51 ms
24,048 KB |
testcase_56 | AC | 51 ms
23,400 KB |
testcase_57 | AC | 82 ms
23,436 KB |
testcase_58 | AC | 57 ms
23,424 KB |
testcase_59 | AC | 90 ms
23,400 KB |
testcase_60 | AC | 50 ms
23,544 KB |
testcase_61 | AC | 83 ms
24,276 KB |
testcase_62 | AC | 55 ms
23,388 KB |
testcase_63 | AC | 83 ms
23,544 KB |
testcase_64 | AC | 84 ms
24,036 KB |
testcase_65 | AC | 83 ms
24,312 KB |
testcase_66 | AC | 83 ms
23,856 KB |
testcase_67 | AC | 53 ms
23,544 KB |
testcase_68 | AC | 83 ms
23,664 KB |
testcase_69 | AC | 59 ms
23,388 KB |
testcase_70 | AC | 82 ms
23,676 KB |
testcase_71 | AC | 83 ms
24,072 KB |
testcase_72 | AC | 83 ms
23,844 KB |
testcase_73 | AC | 83 ms
24,288 KB |
testcase_74 | AC | 51 ms
24,288 KB |
testcase_75 | AC | 51 ms
24,372 KB |
testcase_76 | AC | 83 ms
23,556 KB |
testcase_77 | AC | 84 ms
24,276 KB |
testcase_78 | AC | 84 ms
24,060 KB |
testcase_79 | AC | 82 ms
23,676 KB |
testcase_80 | AC | 64 ms
24,060 KB |
testcase_81 | AC | 52 ms
23,556 KB |
testcase_82 | AC | 82 ms
23,436 KB |
testcase_83 | AC | 50 ms
24,288 KB |
testcase_84 | AC | 54 ms
24,456 KB |
testcase_85 | AC | 67 ms
24,036 KB |
testcase_86 | AC | 83 ms
24,048 KB |
testcase_87 | AC | 82 ms
23,544 KB |
testcase_88 | AC | 85 ms
24,012 KB |
testcase_89 | AC | 85 ms
23,424 KB |
testcase_90 | AC | 50 ms
23,544 KB |
testcase_91 | AC | 75 ms
24,048 KB |
testcase_92 | AC | 58 ms
23,664 KB |
testcase_93 | AC | 87 ms
23,640 KB |
testcase_94 | AC | 83 ms
23,652 KB |
testcase_95 | AC | 51 ms
23,628 KB |
testcase_96 | AC | 67 ms
23,400 KB |
testcase_97 | AC | 84 ms
23,844 KB |
testcase_98 | AC | 83 ms
23,868 KB |
testcase_99 | AC | 84 ms
24,024 KB |
ソースコード
#include <bits/extc++.h> #include <atcoder/all> using namespace std; using ll = long long; #define REP(i,n) for(int i=0;i<int(n);i++) #define FOR(i,a,b) for(int i=a;i<=int(b);i++) #define ALL(x) x.begin(),x.end() #define INF INT_MAX #define INFL LLONG_MAX / 4 using namespace atcoder; using mint = modint998244353; template<typename T> void chmin(T& a, T b) { a = min(a, b); } template<typename T> void chmax(T& a, T b) { a = max(a, b); } #define PR(x) cerr << #x << "=" << x << endl using i128 = __int128_t; int main_proc() { // h, p vector f(1100, vector<pair<int, int>>(25)); vector<queue<int>> opp_ys(25); int new_opp_y = 59; int pow_sum = 0; int pos_x = 12; auto get_lv = [&]() { return 1 + pow_sum / 100; }; auto valid = [&](int pos_y, char to) -> bool { if(to == 'L') { return f[pos_y+1][(pos_x+24)%25].first == 0 && f[pos_y][(pos_x+24)%25].first == 0; } else if(to == 'R') { // PR(f[pos_y+2][(pos_x+1)%25].first); return f[pos_y+1][(pos_x+1)%25].first == 0 && f[pos_y][(pos_x+1)%25].first == 0; } else { PR(f[pos_y+1][pos_x].first); return f[pos_y+1][pos_x].first == 0; } }; REP(pos_y, 1000) { PR(pos_y); int n; cin >> n; REP(i, n) { int h, p, x; cin >> h >> p >> x; f[new_opp_y][x] = {h, p}; opp_ys[x].push(new_opp_y); } new_opp_y++; vector<int> min_reach_turns(25, 1000); min_reach_turns[pos_x] = 1; REP(pm, 2){ int now_pos_y = pos_y; FOR(i, 1, 24) { int offset = pm ? i : 25-i; int new_pos_x = (pos_x + offset) % 25; now_pos_y++; // PR(now_pos_y); // PR(new_pos_x); while(f[now_pos_y][new_pos_x].first && f[now_pos_y+1][new_pos_x].first) { now_pos_y++; } chmin(min_reach_turns[new_pos_x], now_pos_y - pos_y); } } int min_req_turn = 1000; char next_to = 'S'; REP(x, 25) { if(opp_ys[x].empty()) continue; int now_opp_y = opp_ys[x].front(); int req_turn = f[now_opp_y][x].first / get_lv() + min_reach_turns[x] - 1; if(req_turn + pos_y >= now_opp_y) continue; if(min_req_turn > req_turn) { if(pos_x == x) next_to = 'S'; if(abs(pos_x - x) < 13) { if(pos_x < x) next_to = 'R'; if(pos_x > x) next_to = 'L'; } else { if(pos_x < x) next_to = 'L'; if(pos_x > x) next_to = 'R'; } min_req_turn = req_turn; } } if(valid(pos_y, next_to)) { // PR(pos_y); PR(pos_x); if(next_to == 'L') pos_x = (pos_x + 24) % 25; if(next_to == 'R') pos_x = (pos_x + 1) % 25; } else if (valid(pos_y, 'S')) { next_to = 'S'; // PR(pos_y); // PR(pos_x); // PR(min_req_turn); } else if (valid(pos_y, 'R')) { pos_x = (pos_x + 1) % 25; next_to = 'R'; } else { pos_x = (pos_x + 24) % 25; next_to = 'L'; } // if(pos_y > 100) break; if(opp_ys[pos_x].size()) { PR(opp_ys[pos_x].front()); f[opp_ys[pos_x].front()][pos_x].first--; if(f[opp_ys[pos_x].front()][pos_x].first == 0) { pow_sum += f[opp_ys[pos_x].front()][pos_x].second; f[opp_ys[pos_x].front()][pos_x] = {0, 0}; opp_ys[pos_x].pop(); } } REP(i, 25) { if(opp_ys[i].front() == pos_y) opp_ys[i].pop(); } cout << next_to << endl; } return 0; } void test1(int dn) { string fn = "/Users/tm/Desktop/atcoder/yukicoder/yukicoder_9774/yukicoder_9774/tools/in/00"; if(dn<10) fn += '0'; fn += to_string(dn); fn += ".txt"; ifstream in(fn); cin.rdbuf(in.rdbuf()); string fno = "/Users/tm/Desktop/atcoder/yukicoder/yukicoder_9774/yukicoder_9774/Visualizer_for_Mac/output.txt"; ofstream out(fno); std::streambuf* strbuf = cout.rdbuf(out.rdbuf()); vector<int> p(25); REP(i, 25) cin >> p[i]; main_proc(); std::cout.rdbuf(strbuf); return; } int main() { //test1(0); main_proc(); return 0; }