Submission #542388

#TimeUsernameProblemLanguageResultExecution timeMemory
542388rembocoderMutating DNA (IOI21_dna)C++17
0 / 100
25 ms6604 KiB
#pragma GCC target ("avx2") #pragma GCC optimization ("O3") #pragma GCC optimization ("unroll-loops") #include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; #include <bits/stdc++.h> using namespace std; //#define int int64_t #define forn(i, n) for (int i = 0; i < (int)(n); i++) struct my_hash { inline size_t operator()(const pair<int, int>& a) const { return a.first * 31 + a.second; } }; string s, t; string act = "ACT"; vector<int> cnt[3]; vector<int> x[3][3]; void init(string s_, string t_) { s = s_; t = t_; int n = s.size(); for (int i = 0; i < 3; i++) { cnt[i].resize(n + 1); for (int j = 0; j < n; j++) { cnt[i][j + 1] = cnt[i][j] + (act[i] == s[j]); cnt[i][j + 1] = cnt[i][j] - (act[i] == t[j]); } } for (int i = 0; i < 3; i++) { cnt[i].resize(n + 1); for (int j = 0; j < 3; j++) { for (int k = 0; k < n; k++) { x[i][j][k + 1] = x[i][j][k] + (act[i] == s[k] && act[j] == t[k]); } } } } int get_distance(int l, int r) { r++; for (int i = 0; i < 3; i++) { if (cnt[i][r] != cnt[i][l]) { return -1; } } int ab = x[0][1][r] - x[0][1][l]; int ba = x[1][0][r] - x[1][0][l]; int bc = x[1][2][r] - x[1][2][l]; int cb = x[2][1][r] - x[2][1][l]; int ca = x[2][0][r] - x[2][0][l]; int ac = x[0][2][r] - x[0][2][l]; int ans = min(ab, ba) + min(bc, cb) + min(ac, ca); return ans; } /*int32_t main() { ios_base::sync_with_stdio(0); int t = 1; cin >> t; while (t--) { int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } sort(a.begin(), a.end()); int sum_a0 = 0; for (int i = 1; i < n; i++) { sum_a0 += a[0] + a[i]; } int sum_ab = 0; for (int i = 0; i < n - 1; i++) { sum_ab += a[i] + a.back(); } if (sum_a0 > 0 || sum_ab < 0) { cout << "INF\n"; continue; } vector<int> sum(n + 1); for (int i = 0; i < n; i++) { sum[i + 1] = sum[i] + a[i]; } int ans = -2e18; for (int i = 0; i < n; i++) { int cur = -a[i] * a[i] * (n - 1); cur += (sum[n] - sum[i + 1] - a[i] * (n - i - 1)) * (a[0] - a[i]); cur += (sum[i] - sum[1] - a[i] * (i - 1)) * (a[n - 1] - a[i]); ans = max(ans, cur); } cout << ans << '\n'; } return 0; } */

Compilation message (stderr)

dna.cpp:2: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    2 | #pragma GCC optimization ("O3")
      | 
dna.cpp:3: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    3 | #pragma GCC optimization ("unroll-loops")
      |
#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...