Submission #1361993

#TimeUsernameProblemLanguageResultExecution timeMemory
1361993lyra_g13Mutating DNA (IOI21_dna)C++20
Compilation error
0 ms0 KiB
#include "dna.h"
#include <bits/stdc++.h>
using ll = long long;
using namespace std;

ll n = 100000;
vector<ll> ac(n), ca(n), at(n), ta(n), ct(n), tc(n);
void init(string a, string b) {

  for (int i = 0; i < min(a.size(), n); i++) {
    if (i == 0) {
      ac[i] = (a[i] == 'A' and b[i] == 'C');
      ca[i] = (a[i] == 'C' and b[i] == 'A');
      ct[i] = (a[i] == 'C' and b[i] == 'T');
      tc[i] = (a[i] == 'T' and b[i] == 'C');
      at[i] = (a[i] == 'A' and b[i] == 'T');
      ta[i] = (a[i] == 'T' and b[i] == 'A');
    } else {
      ac[i] = ac[i - 1] + (a[i] == 'A' and b[i] == 'C');
      ca[i] = ca[i - 1] + (a[i] == 'C' and b[i] == 'A');
      ct[i] = ct[i - 1] + (a[i] == 'C' and b[i] == 'T');
      tc[i] = tc[i - 1] + (a[i] == 'T' and b[i] == 'C');
      at[i] = at[i - 1] + (a[i] == 'A' and b[i] == 'T');
      ta[i] = ta[i - 1] + (a[i] == 'T' and b[i] == 'A');
    }
  }
}
int get_distance(int x, int y) {

  if (x == 0) {
    if (ac[y] + at[y] != ca[y] + ta[y])
      return -1;
    if (tc[y] + ta[y] != ct[y] + at[y])
      return -1;
    if (ct[y] + ca[y] != tc[y] + ac[y])
      return -1;

    ll find = min(ac[y], ca[y]) + min(tc[y], ct[y]) + min(at[y], ta[y]);
    ll mis = ac[y] + ca[y] + tc[y] + ct[y] + at[y] + ta[y];

    ll rem = mis - 2 * find;

    return find + 2 * rem / 3;

  } else {
    if (ac[y] - ac[x - 1] + at[y] - at[x - 1] != ca[y] - ca[x - 1] + ta[y] - ta[x - 1])
      return -1;
    if (tc[y] - tc[x - 1] + ta[y] - ta[x - 1] != ct[y] - ct[x - 1] + at[y] - at[x - 1])
      return -1;
    if (ct[y] - ct[x - 1] + ca[y] - ca[x - 1] != tc[y] - tc[x - 1] + ac[y] - ac[x - 1])
      return -1;

    ll find = min(ac[y] - ac[x - 1], ca[y] - ca[x - 1]) + min(tc[y] - tc[x - 1], ct[y] - ct[x - 1]) + min(at[y] - at[x - 1], ta[y] - ta[x - 1]);
    ll mis = ac[y] + ca[y] + tc[y] + ct[y] + at[y] + ta[y] - ac[x - 1] - ca[x - 1] - tc[x - 1] - ct[x - 1] - at[x - 1] - ta[x - 1];

    ll rem = mis - 2 * find;

    return find + 2 * rem / 3;
  }
}

Compilation message (stderr)

dna.cpp: In function 'void init(std::string, std::string)':
dna.cpp:10:26: error: no matching function for call to 'min(std::__cxx11::basic_string<char>::size_type, ll&)'
   10 |   for (int i = 0; i < min(a.size(), n); i++) {
      |                       ~~~^~~~~~~~~~~~~
In file included from /usr/include/c++/13/string:51,
                 from dna.h:1,
                 from dna.cpp:1:
/usr/include/c++/13/bits/stl_algobase.h:233:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  233 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/13/bits/stl_algobase.h:233:5: note:   template argument deduction/substitution failed:
dna.cpp:10:26: note:   deduced conflicting types for parameter 'const _Tp' ('long unsigned int' and 'll' {aka 'long long int'})
   10 |   for (int i = 0; i < min(a.size(), n); i++) {
      |                       ~~~^~~~~~~~~~~~~
/usr/include/c++/13/bits/stl_algobase.h:281:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  281 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/13/bits/stl_algobase.h:281:5: note:   template argument deduction/substitution failed:
dna.cpp:10:26: note:   deduced conflicting types for parameter 'const _Tp' ('long unsigned int' and 'll' {aka 'long long int'})
   10 |   for (int i = 0; i < min(a.size(), n); i++) {
      |                       ~~~^~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from dna.cpp:2:
/usr/include/c++/13/bits/stl_algo.h:5775:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(initializer_list<_Tp>)'
 5775 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/13/bits/stl_algo.h:5775:5: note:   template argument deduction/substitution failed:
dna.cpp:10:26: note:   mismatched types 'std::initializer_list<_Tp>' and 'long unsigned int'
   10 |   for (int i = 0; i < min(a.size(), n); i++) {
      |                       ~~~^~~~~~~~~~~~~
/usr/include/c++/13/bits/stl_algo.h:5785:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(initializer_list<_Tp>, _Compare)'
 5785 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/13/bits/stl_algo.h:5785:5: note:   template argument deduction/substitution failed:
dna.cpp:10:26: note:   mismatched types 'std::initializer_list<_Tp>' and 'long unsigned int'
   10 |   for (int i = 0; i < min(a.size(), n); i++) {
      |                       ~~~^~~~~~~~~~~~~