# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1267591 | quangykqh | Selling RNA Strands (JOI16_selling_rna) | C++20 | 1593 ms | 236964 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';
}
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |