Submission #254663

#TimeUsernameProblemLanguageResultExecution timeMemory
254663alishahali1382Selling RNA Strands (JOI16_selling_rna)C++14
100 / 100
190 ms53496 KiB
#include <bits/stdc++.h> #pragma GCC optimize ("O2,unroll-loops") //#pragma GCC optimize("no-stack-protector,fast-math") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") using namespace std; typedef long long ll; typedef long double ld; typedef pair<int, int> pii; typedef pair<pii, int> piii; typedef pair<ll, ll> pll; #define debug(x) cerr<<#x<<'='<<(x)<<endl; #define debugp(x) cerr<<#x<<"= {"<<(x.first)<<", "<<(x.second)<<"}"<<endl; #define debug2(x, y) cerr<<"{"<<#x<<", "<<#y<<"} = {"<<(x)<<", "<<(y)<<"}"<<endl; #define debugv(v) {cerr<<#v<<" : ";for (auto x:v) cerr<<x<<' ';cerr<<endl;} #define all(x) x.begin(), x.end() #define pb push_back #define kill(x) return cout<<x<<'\n', 0; const int inf=1000000010; const ll INF=10000000000000010LL; const int mod=1000000007; const int MAXN=100010, SGM=4; map<char, int> mp={{'A', 0}, {'U', 1}, {'C', 2}, {'G', 3}}; int n, m, k, u, v, x, y, t, a, b; int TR[2000001][5], ts; int ans[MAXN]; string S[MAXN], P, Q[MAXN]; vector<int> vec[MAXN]; int main(){ ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); cin>>n>>m; for (int i=1; i<=n; i++) cin>>S[i]; sort(S+1, S+n+1); for (int i=1; i<=m; i++){ cin>>P>>Q[i]; int l=lower_bound(S+1, S+n+1, P)-S; int r=upper_bound(S+l, S+n+1, P+'Z')-S; if (l==r) continue ; reverse(all(Q[i])); vec[l-1].pb(-i); vec[r-1].pb(+i); } for (int i=1; i<=n; i++){ reverse(all(S[i])); int v=0; for (char ch:S[i]){ int c=mp[ch]; if (!TR[v][c]) TR[v][c]=++ts; v=TR[v][c]; TR[v][4]++; } for (int x:vec[i]){ int id=abs(x), z=id/x; int v=0; for (char ch:Q[id]){ int c=mp[ch]; v=TR[v][c]; if (!v) break ; } ans[id]+=z*TR[v][4]; } } for (int i=1; i<=m; i++) cout<<ans[i]<<"\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...