Submission #1267519

#TimeUsernameProblemLanguageResultExecution timeMemory
1267519quangykqhSelling RNA Strands (JOI16_selling_rna)C++20
35 / 100
588 ms1114112 KiB
#include<bits/stdc++.h> using namespace std; const int MN=1e6+1209; long long n,m,k,ans,a[MN],pos[MN],MIN; string skibidi,sex; struct trie { struct Node2 { int cnt; Node2 *child[5][5]; Node2() { cnt=0; for(int i=0;i<5;i++) for(int j=0;j<5;j++) child[i][j]=NULL; } }; Node2 *root=new Node2; Node2 *cur=root; void addstring(string& s,int id,bool split1,bool split2) { if(id==s.length())return; Node2 *cb=cur; if(!split1&&!split2) { if(!cur->child[pos[s[id]]][pos[s[s.length()-id-1]]]) cur->child[pos[s[id]]][pos[s[s.length()-id-1]]]=new Node2; cur=cur->child[pos[s[id]]][pos[s[s.length()-id-1]]]; cur->cnt++; addstring(s,id+1,false,false); cur=cb; } if((!split1&&!split2)||split1) { if(!cur->child[pos[s[id]]][0]) cur->child[pos[s[id]]][0]=new Node2; cur=cur->child[pos[s[id]]][0]; cur->cnt++; addstring(s,id+1,true,false); cur=cb; } if((!split1&&!split2)||split2) { if(!cur->child[0][pos[s[s.length()-id-1]]]) cur->child[0][pos[s[s.length()-id-1]]]=new Node2; cur=cur->child[0][pos[s[s.length()-id-1]]]; cur->cnt++; addstring(s,id+1,false,true); cur=cb; } } int takeans(string &p,string &q) { cur=root; for(int i=0;i<p.length();i++) { if(!cur->child[pos[p[i]]][pos[q[i]]])return 0; cur=cur->child[pos[p[i]]][pos[q[i]]]; } return cur->cnt; } }; trie TRIE; 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']=4; pos['#']=0; for(int i=1;i<=n;i++) { cin>>skibidi; TRIE.addstring(skibidi,0,false,false); } while(m--) { cin>>skibidi>>sex; if(skibidi.length()==0&&sex.length()==0) { cout<<n<<'\n'; continue; } reverse(sex.begin(),sex.end()); while(sex.length()<skibidi.length()) sex.push_back('#'); while(skibidi.length()<sex.length()) skibidi.push_back('#'); cout<<TRIE.takeans(skibidi,sex)<<'\n'; } }

Compilation message (stderr)

selling_rna.cpp: In function 'int main()':
selling_rna.cpp:70:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   70 |         freopen("GAME.INP","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
selling_rna.cpp:71:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   71 |         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...