D. The Wu(状压)

网友投稿 757 2022-08-26 07:00:36

D. The Wu(状压)

Childan is making up a legendary story and trying to sell his forgery — a necklace with a strong sense of "Wu" to the Kasouras. But Mr. Kasoura is challenging the truth of Childan's story. So he is going to ask a few questions about Childan's so-called "personal treasure" necklace.

This "personal treasure" is a multiset SS of mm "01-strings".

A "01-string" is a string that contains nn characters "0" and "1". For example, if n=4n=4, strings "0110", "0000", and "1110" are "01-strings", but "00110" (there are 55 characters, not 44) and "zero" (unallowed characters) are not.

Note that the multiset SS can contain equal elements.

Frequently, Mr. Kasoura will provide a "01-string" tt and ask Childan how many strings ss are in the multiset SS such that the "Wu" value of the pair (s,t)(s,t) is not greater than kk.

Mrs. Kasoura and Mr. Kasoura think that if si=tisi=ti (1≤i≤n1≤i≤n) then the "Wu" value of the character pair equals to wiwi, otherwise 00. The "Wu" value of the "01-string" pair is the sum of the "Wu" values of every character pair. Note that the length of every "01-string" is equal to nn.

For example, if w=[4,5,3,6]w=[4,5,3,6], "Wu" of ("1001", "1100") is 77 because these strings have equal characters only on the first and third positions, so w1+w3=4+3=7w1+w3=4+3=7.

You need to help Childan to answer Mr. Kasoura's queries. That is to find the number of strings in the multiset SS such that the "Wu" value of the pair is not greater than kk.

Input

The first line contains three integers nn, mm, and qq (1≤n≤121≤n≤12, 1≤q,m≤5⋅1051≤q,m≤5⋅105) — the length of the "01-strings", the size of the multiset SS, and the number of queries.

The second line contains nn integers w1,w2,…,wnw1,w2,…,wn (0≤wi≤1000≤wi≤100) — the value of the ii-th caracter.

Each of the next mm lines contains the "01-string" ss of length nn — the string in the multiset SS.

Each of the next qq lines contains the "01-string" tt of length nn and integer kk (0≤k≤1000≤k≤100) — the query.

Output

For each query, print the answer for this query.

Examples

input

2 4 5 40 20 01 01 10 11 00 20 00 40 11 20 11 40 11 60

output

2 4 2 3 4

input

1 2 4 100 0 1 0 0 0 100 1 0 1 100

output

1 2 1 2

状压。

代码:

#include#define rep(i,s,t) for(int i=(s);i<=(t);++i)#define per(i,s,t) for(int i=(t);i<=(s);++i)#define ll long longusing namespace std;const int maxn=1e5+10;const int INF=0x3f3f3f3f;int sum[5000][110];int w[5000];int shu[5000];int main(){ int n,m,q; scanf("%d%d%d",&n,&m,&q); rep(i,0,n-1)scanf("%d",&w[i]); char q1[20]; rep(i,1,m) { scanf("%s",q1); int x=0; rep(j,0,n-1) { int w=q1[j]-'0'; if(w)x+=(1<<(j)); } shu[x]++; } rep(i,0,(1<100)break; } if(sum_1<=100)sum[i][sum_1]+=shu[j]; } char q2[20]; int K; while(q--) { scanf("%s%d",q2,&K); int x=0; rep(i,0,n-1) { int w=q2[i]-'0'; if(w)x+=(1<<(i)); } ll ans=0; rep(i,0,K)ans+=sum[x][i]; printf("%I64d\n",ans); } return 0;}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:3631. Delivery Service(倍增lca+树上差分)
下一篇:通俗讲解:缓存、缓存算法和缓存框架(简述缓存的分类缓存的工作原理)
相关文章