Submission #378215

#TimeUsernameProblemLanguageResultExecution timeMemory
378215AriaHGenetics (BOI18_genetics)C++11
100 / 100
341 ms83156 KiB
/** I can do this all day **/ #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx") #pragma GCC optimize("O2") #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; typedef pair<int,int> pii; typedef pair<ll,ll> pll; #define all(x) (x).begin(),(x).end() #define F first #define S second #define Mp make_pair #define SZ(x) (int)x.size() #define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define file_io freopen("in.txt" , "r+" , stdin) ; freopen("out.txt" , "w+" , stdout); const int N = 4110; const ll mod = 1e9 + 21; const ll mod2 = 998244353; const ll inf = 8e18; const int LOG = 22; const ll base = 5e4 + 21; char C[N]; int n, m, k, mark[N], a[N][N]; ll pw[N], ps[N], hsh[N][4]; int main() { pw[0] = 1; ps[0] = 1; for(int i = 1; i < N; i ++) { pw[i] = base * pw[i - 1] % mod; ps[i] = (ps[i - 1] + pw[i]) % mod; } scanf("%d%d%d", &n, &m, &k); for(int i = 0; i < n; i ++) { scanf("%s", C); for(int j = 0; j < m; j ++) { int cu; if(C[j] == 'A') cu = 0; else if(C[j] == 'T') cu = 1; else if(C[j] == 'C') cu = 2; else cu = 3; a[i][j] = cu; ///printf("%d", a[i][j]); hsh[j][cu] = (hsh[j][cu] + pw[i]) % mod; } ///printf("\n"); } for(int i = 0; i < n; i ++) { ll cu = 0; for(int j = 0; j < m; j ++) { cu = (cu + ps[n - 1] - hsh[j][a[i][j]] + mod) % mod; } ///printf("%lld ", cu); if(cu == (ps[n - 1] - pw[i] + mod) % mod * k % mod) { return !printf("%d", i + 1); } } return 0; } /** test corner cases(n = 1?) watch for overflow or minus indices **/

Compilation message (stderr)

genetics.cpp: In function 'int main()':
genetics.cpp:42:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   42 |  scanf("%d%d%d", &n, &m, &k);
      |  ~~~~~^~~~~~~~~~~~~~~~~~~~~~
genetics.cpp:45:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   45 |   scanf("%s", C);
      |   ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...