Submission #1267591

#TimeUsernameProblemLanguageResultExecution timeMemory
1267591quangykqhSelling RNA Strands (JOI16_selling_rna)C++20
35 / 100
1593 ms236964 KiB
#include<bits/stdc++.h> using namespace std; const int MN=1e5+1209; long long n,m,k,ans,pos[500],MIN; string skibidi,sex,s[MN]; struct trie { struct Node { vector<int>in; Node *child[4]; Node() { for(int i=0;i<4;i++) child[i]=NULL; } }; Node *root=new Node; void addstring(int id) { Node *cur=root; cur->in.push_back(id); for(int i=0;i<s[id].length();i++) { if(!cur->child[pos[s[id][i]]]) cur->child[pos[s[id][i]]]=new Node; cur=cur->child[pos[s[id][i]]]; cur->in.push_back(id); } } }; trie TRIEPF,TRIESF; int takeans(string &p,string &q) { trie::Node* curpf=TRIEPF.root; for(int i=0;i<p.length();i++) { if(!curpf->child[pos[p[i]]])return 0; curpf=curpf->child[pos[p[i]]]; } trie::Node* cursf=TRIESF.root; for(int i=0;i<q.length();i++) { if(!cursf->child[pos[q[i]]])return 0; cursf=cursf->child[pos[q[i]]]; } int res=0; for(auto i:cursf->in) { int id=lower_bound(curpf->in.begin(),curpf->in.end(),i)-curpf->in.begin(); if(id>=curpf->in.size())continue; if(curpf->in[id]==i)res++; } return res; } int main() { if(fopen("GAME.INP","r")) { freopen("GAME.INP","r",stdin); freopen("GAME.OUT","w",stdout); } ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m; pos['A']=1; pos['C']=2; pos['U']=3; pos['G']=0; for(int i=1;i<=n;i++) { cin>>s[i]; } sort(s+1,s+n+1); for(int i=1;i<=n;i++) { TRIEPF.addstring(i); reverse(s[i].begin(),s[i].end()); TRIESF.addstring(i); } while(m--) { cin>>skibidi>>sex; reverse(sex.begin(),sex.end()); cout<<takeans(skibidi,sex)<<'\n'; } }

Compilation message (stderr)

selling_rna.cpp: In function 'int main()':
selling_rna.cpp:62:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   62 |         freopen("GAME.INP","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
selling_rna.cpp:63:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   63 |         freopen("GAME.OUT","w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...