제출 #1154902

#제출 시각아이디문제언어결과실행 시간메모리
1154902chautanphatSelling RNA Strands (JOI16_selling_rna)C11
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; struct Pre { struct node { int l, r; node* child[4]; node () { l = 1e9, r = 0; for (int i = 0; i < 4; i++) child[i] = NULL; } } *root; Pre () { root = new node(); } void add(string s, int idx) { node* cur = root; for (int i = 0; i < (int)s.size(); i++) { int id = s[i]-'A'; if (cur->child[id] == NULL) cur->child[id] = new node(); cur = cur->child[id]; cur->l = min(cur->l, idx), cur->r = max(cur->r, idx); } } pair<int, int> get(string s) { node* cur = root; for (int i = 0; i < (int)s.size(); i++) { int id = s[i]-'A'; if (cur->child[id] == NULL) return {-1, -1}; cur = cur->child[id]; } return {cur->l, cur->r}; } } pre; struct Suf { struct node { vector<int> v; node* child[4]; node () { for (int i = 0; i < 4; i++) child[i] = NULL; } } *root; Suf () { root = new node(); } void add(string s, int idx) { reverse(s.begin(), s.end()); node* cur = root; for (int i = 0; i < (int)s.size(); i++) { int id = s[i]-'A'; if (cur->child[id] == NULL) cur->child[id] = new node(); cur = cur->child[id]; cur->v.push_back(idx); } } void srt(node* cur = NULL) { if (cur == NULL) cur = root; sort(cur->v.begin(), cur->v.end()); for (int i = 0; i < 4; i++) if (cur->child[i] != NULL) srt(cur->child[i]); } int get(string s, int l, int r) { reverse(s.begin(), s.end()); node* cur = root; for (int i = 0; i < (int)s.size(); i++) { int id = s[i]-'A'; if (cur->child[id] == NULL) return 0; cur = cur->child[id]; } int L = lower_bound(cur->v.begin(), cur->v.end(), l)-cur->v.begin(); int R = upper_bound(cur->v.begin(), cur->v.end(), r)-cur->v.begin(); return R-L; } } suf; string normalize(string s) { for (auto &c : s) if (c == 'U') c = 'B'; else if (c == 'G') c = 'D'; return s; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m; cin >> n >> m; vector<string> s(n); for (int i = 0; i < n; i++) { cin >> s[i]; s[i] = normalize(s[i]); } sort(s.begin(), s.end()); for (int i = 0; i < n; i++) pre.add(s[i], i), suf.add(s[i], i); suf.srt(); while (m--) { string p, q; cin >> p >> q; p = normalize(p); q = normalize(q); pair<int, int> pr = pre.get(p); if (pr.first == -1) cout << "0\n"; else cout << suf.get(q, pr.first, pr.second) << '\n'; } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

selling_rna.c:1:10: fatal error: bits/stdc++.h: No such file or directory
    1 | #include <bits/stdc++.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.