제출 #947209

#제출 시각아이디문제언어결과실행 시간메모리
947209LOLOLOGenetics (BOI18_genetics)C++17
100 / 100
278 ms36436 KiB
#include <bits/stdc++.h>
typedef long long ll;

#define           f    first
#define           s    second
#define           pb    push_back
#define           ep    emplace
#define           eb    emplace_back
#define           lb    lower_bound
#define           ub    upper_bound
#define       all(x)    x.begin(), x.end()
#define      rall(x)    x.rbegin(), x.rend()
#define   uniquev(v)    sort(all(v)), (v).resize(unique(all(v)) - (v).begin())
#define     mem(f,x)    memset(f , x , sizeof(f))
#define        sz(x)    (int)(x).size()
#define  __lcm(a, b)    (1ll * ((a) / __gcd((a), (b))) * (b))
#define          mxx    *max_element
#define          mnn    *min_element
#define    cntbit(x)    __builtin_popcountll(x)

using namespace std;
const int N = 4200;

mt19937 rd(chrono::steady_clock::now().time_since_epoch().count());

ll get(ll l, ll h) {
    return uniform_int_distribution <ll> (l, h)(rd);
}

string s[N];
int get(char ch) {
    if (ch == 'A')
        return 0;

    if (ch == 'C')
        return 1;

    if (ch == 'G')
        return 2;

    return 3;
}

ll all[N][4], val[N];

int solve() {
    ll k;
    int n, m;
    cin >> n >> m >> k;

    ll sum = 0;
    for (int i = 1; i <= n; i++) {
        cin >> s[i];
        val[i] = get(1, 1000000000);
        sum += val[i] * k;
        for (int j = 0; j < m; j++) {
            all[j][get(s[i][j])] += val[i];
        }
    }

    for (int i = 1; i <= n; i++) {
        ll diff = 0;
        for (int j = 0; j < m; j++) {
            int cur = get(s[i][j]);
            for (int k = 0; k < 4; k++) {
                if (k == cur)
                    continue;

                diff += all[j][k];
            }
        }

        if (diff == (sum - val[i] * k)) {
            return i;
        }
    }

    return -1;
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t = 1;
    //cin >> t;

    while (t--) {
        cout << solve() << '\n';
    }
}

/*
4 3
2 3
2 6 2
2 4 2
6 5 1
1 2 3
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...