Submission #1142084

#TimeUsernameProblemLanguageResultExecution timeMemory
1142084vyaductDNA 돌연변이 (IOI21_dna)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include "dna.h" #define sz(a) (int)(a).size() using namespace std; const int N = 100'001; int cntA[N][3], cntB[N][3]; int pref1[N], pref2[N], pref3[N]; string A, B; int sum(int ch, int x, int y, bool A){ if (A) return cntA[y][ch]-(x == 0 ? 0 : cntA[x-1][ch]); else return cntB[y][ch]-(x == 0 ? 0 : cntB[x-1][ch]); } int ord(char c){ // index by char if (c == 'A') return 0; else if (c == 'T') return 1; else return 2; } bool check(int x, int y){ for (int i=0;i<3;i++){ int sumA = sum(i, x, y, true); int sumB = sum(i, x, y, false); if (sumA != sumB){ return false; } } return true; } void init(string a, string b) { A = a, B = b; memset(cntA, 0, sizeof(cntA)); memset(cntB, 0, sizeof(cntB)); // prefsum precomputation int n = sz(a); for (int i=0;i<n;i++){ // string a cntA[i][0] = (i == 0 ? 0 : cntA[i-1][0]) + (ord(a[i]) == 0); cntA[i][1] = (i == 0 ? 0 : cntA[i-1][1]) + (ord(a[i]) == 1); cntA[i][2] = (i == 0 ? 0 : cntA[i-1][2]) + (ord(a[i]) == 2); // string b cntB[i][0] = (i == 0 ? 0 : cntB[i-1][0]) + (ord(b[i]) == 0); cntB[i][1] = (i == 0 ? 0 : cntB[i-1][1]) + (ord(b[i]) == 1); cntB[i][2] = (i == 0 ? 0 : cntB[i-1][2]) + (ord(b[i]) == 2); } for (int i=0;i<n;i++){ pref1[i] = (i == 0 ? 0 : pref1[i-1]) + (A[i] == 'T' && B[i] != 'T'); pref2[i] = (i == 0 ? 0 : pref2[i-1]) + (A[i] == 'A' && B[i] != 'A'); pref3[i] = (i == 0 ? 0 : pref3[i-1]) + (A[i] == 'C' && B[i] != 'C'); } } // Accepted first subtask, (y-x <= 2) int subtask1(int x, int y){ int size = y-x+1; if (size == 1) return 0; if (size == 2){ return A[x] == B[x] ? 0 : 1; } else { int diff=0; for (int i=x;i<=y;i++){ diff += (A[i] == B[i] ? 0 : 1); } if (diff != 0) return diff-1; else return diff; } } int subtask2_3(int x, int y){ int res1 = pref1[y]-(x==0 ? 0 : pref1[x-1]); int res2 = pref2[y]-(x==0 ? 0 : pref2[x-1]); int res3 = pref3[y]-(x==0 ? 0 : pref3[x-1]); return min(res1, res2, res3); } int get_distance(int x, int y) { bool possible = check(x,y); if (!possible){ return -1; } if (y-x <= 2) return subtask1(x,y); else return subtask2_3(x,y); }

Compilation message (stderr)

In file included from /usr/include/c++/11/bits/specfun.h:45,
                 from /usr/include/c++/11/cmath:1935,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:41,
                 from dna.cpp:1:
/usr/include/c++/11/bits/stl_algobase.h: In instantiation of 'constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare) [with _Tp = int; _Compare = int]':
dna.cpp:77:13:   required from here
/usr/include/c++/11/bits/stl_algobase.h:281:17: error: '__comp' cannot be used as a function
  281 |       if (__comp(__b, __a))
      |           ~~~~~~^~~~~~~~~~