Submission #362507

#TimeUsernameProblemLanguageResultExecution timeMemory
362507denkendoemeerSelling RNA Strands (JOI16_selling_rna)C++14
100 / 100
652 ms345964 KiB
#include<bits/stdc++.h> #define ll long long using namespace std; #define rit string::reverse_iterator ll n,m; struct tri { map<char,tri*>ch; vector<ll>ind; void insert(rit st,rit dr,ll poz) { ind.push_back(poz); if (st==dr) return ; char cha=*st; if (ch.find(cha)==ch.end()) ch[cha]=new tri(); ch[cha]->insert(next(st),dr,poz); } ll cnt(rit st,rit dr,ll l,ll r) { if (st==dr) return lower_bound(ind.begin(),ind.end(),r)-lower_bound(ind.begin(),ind.end(),l); char cha=*st; if (ch.find(cha)==ch.end()) return 0; return ch[cha]->cnt(next(st),dr,l,r); } }trie; int main() { //freopen(".in","r",stdin); //freopen(".out","w",stdout); scanf("%lld%lld\n",&n,&m); vector<string>s(n); ll i; for(i=0;i<n;i++) cin>>s[i]; sort(s.begin(),s.end()); for(i=0;i<n;i++) trie.insert(s[i].rbegin(),s[i].rend(),i); while(m--){ string x,y; cin>>x>>y; ll st=lower_bound(s.begin(),s.end(),x)-s.begin(); ++x.back(); ll dr=lower_bound(s.begin(),s.end(),x)-s.begin(); printf("%lld\n",trie.cnt(y.rbegin(),y.rend(),st,dr)); } return 0; }

Compilation message (stderr)

selling_rna.cpp: In function 'int main()':
selling_rna.cpp:34:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   34 |     scanf("%lld%lld\n",&n,&m);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...