Submission #709878

#TimeUsernameProblemLanguageResultExecution timeMemory
709878stevancvGenetics (BOI18_genetics)C++14
100 / 100
866 ms36264 KiB
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define sp ' '
#define en '\n'
#define smin(a, b) a = min(a, b)
#define smax(a, b) a = max(a, b)
using namespace std;
const int N = 4100 + 5;
const int inf = 1e9;
const int mod = 1e9 + 7;
int Get(char x) {
    if (x == 'A') return 0;
    if (x == 'C') return 1;
    if (x == 'G') return 2;
    if (x == 'T') return 3;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n, m, k;
    cin >> n >> m >> k;
    vector<string> s(n);
    vector<ll> v(n);
    mt19937 mt(time(nullptr));
    for (int i = 0; i < n; i++) {
        cin >> s[i];
        v[i] = mt() % mod;
    }
    vector<ll> d(n);
    for (int j = 0; j < m; j++) {
        vector<ll> a(4);
        for (int i = 0; i < n; i++) {
            a[Get(s[i][j])] += v[i];
        }
        for (int i = 0; i < n; i++) {
            for (int p = 0; p < 4; p++) {
                if (Get(s[i][j]) != p) d[i] += a[p];
            }
        }
    }
    ll svi = 0;
    for (int i = 0; i < n; i++) svi += v[i];
    for (int i = 0; i < n; i++) {
        if ((svi - v[i]) * k == d[i]) {
            cout << i + 1 << en;
            return 0;
        }
    }
    return 0;
}

Compilation message (stderr)

genetics.cpp: In function 'int Get(char)':
genetics.cpp:17:1: warning: control reaches end of non-void function [-Wreturn-type]
   17 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...