Submission #421095

#TimeUsernameProblemLanguageResultExecution timeMemory
421095nicolaalexandraGenetics (BOI18_genetics)C++14
100 / 100
988 ms101084 KiB
#include <bits/stdc++.h>
#define DIM 4200
#pragma GCC optimize("Ofast")
using namespace std;

char s[DIM];
int a[DIM][DIM];
long long sum[DIM][DIM],r[DIM];
int n,m,k,i,j;

int main (){

    //ifstream cin ("date.in");
    //ofstream cout ("date.out");

    cin>>n>>m>>k;
    for (i=1;i<=n;i++){
        cin>>s+1;
        for (j=1;j<=m;j++){
            if (s[j] == 'A')
                a[i][j] = 1;
            if (s[j] == 'C')
                a[i][j] = 2;
            if (s[j] == 'G')
                a[i][j] = 3;
            if (s[j] == 'T')
                a[i][j] = 4;
        }
    }

    long long total = 0;
    for (i=1;i<=n;i++){
        r[i] = rand();
        total += r[i];

        for (j=1;j<=m;j++)
            sum[j][a[i][j]] += r[i];
    }

    for (i=1;i<=n;i++){

        long long val = 0;
        for (j=1;j<=m;j++)
            val += total - sum[j][a[i][j]];

        if (val == 1LL * k * (total - r[i])){
            cout<<i;
            break;
        }
    }


    /*for (int pas=1;pas<=4;pas++){

        for (i=1;i<=n;i++){
            v[i].reset();
            for (j=1;j<=m;j++){
                if (a[i][j] == ch[pas])
                    v[i][j] = 1;
            }}

        for (i=1;i<=n;i++)
            for (j=i+1;j<=n;j++){
                int val = (v[i] & v[j]).count();
                //int val = __builtin_popcount (v[i] & v[j]);
                cnt[i][j] += val;
                cnt[j][i] += val;
            }
    }

    for (i=1;i<=n;i++){
        int ok = 1;
        for (j=1;j<=n;j++)
            if (i != j && cnt[i][j] != m - k){
                ok = 0;
                break;
            }
        if (ok){
            cout<<i;
            break;
        }
    }

*/

    return 0;
}

Compilation message (stderr)

genetics.cpp: In function 'int main()':
genetics.cpp:18:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   18 |         cin>>s+1;
      |              ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...