Guest User

genetics

a guest
Apr 29th, 2018
1,068
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.11 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. const int N = 4105;
  6. const int mod = 1e9 + 123;
  7. const int base = 5102000;
  8.  
  9. int n, m, p;
  10. int f[N][4];
  11. int pw[N];
  12. int a[N][N];
  13.  
  14. int to(char c) {
  15.     if (c == 'A') return 0;
  16.     if (c == 'C') return 1;
  17.     if (c == 'G') return 2;
  18.     if (c == 'T') return 3;
  19. }
  20.  
  21. void add(int &x, int y) {
  22.     x = x + y >= mod ? x + y - mod : x + y;
  23. }
  24.  
  25. int main() {
  26.     ios::sync_with_stdio(false);
  27.     cin >> n >> m >> p;
  28.     pw[0] = 1;
  29.     for (int i = 1; i < n; ++i) pw[i] = 1LL * base * pw[i - 1] % mod;
  30.     for (int i = 0; i < n; ++i) {
  31.         string s; cin >> s;
  32.         for (int j = 0; j < m; ++j) {
  33.             a[i][j] = to(s[j]);
  34.         }
  35.         for (int j = 0; j < m; ++j) {
  36.             add(f[j][a[i][j]], pw[i]);     
  37.         }
  38.     }
  39.     for (int i = 0; i < n; ++i) {
  40.         long long cur = 0;
  41.         long long all = 0;
  42.         for (int j = 0; j < n; ++j) {
  43.             if (j != i) all += 1LL * pw[j] * p % mod;
  44.         }
  45.         for (int j = 0; j < m; ++j) {
  46.             for (int k = 0; k < 4; ++k) {
  47.                 if (k != a[i][j]) cur += f[j][k];
  48.             }
  49.         }
  50.         cur %= mod, all %= mod;
  51.         // cout << cur << ' ' << all << '\n';
  52.         if (cur == all) {
  53.             cout << i + 1; return 0;
  54.         }
  55.     }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment