#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';
}
}
컴파일 시 표준 에러 (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 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... |