描述
XX中的食堂在使用饭卡之前使用饭票
饭票并不向饭卡一样方便。比如你有1张5元饭票和3张1元饭票,则你无法付4元的饭费。
某天小x去食堂吃饭,手里有n种饭票,面值分别为A1~An,数量分别为C1~Cn
请你计算小x的饭票能组成多少在[1,m]区间内的面值。
输入
第一行2个数n m,用空格隔开。
第二行前n个数,分别为A1…An
第二行后n个数,分别为C1…Cn
1 ≤ n ≤ 100
1 ≤ Ai ≤ m ≤ 100000
1 ≤ Ci ≤ 1000
输出
一个数,即问题的答案
样例
输入
3 10
1 2 4 2 1 1
输出
8
代码
//二进制分组
#include<bits/stdc++.h>
using namespace std;
int a[10001];
bool v[100001];
main()
{
int n,m,sum=0,ans=0;
cin>>m>>n;
int x[m+1],y[m+1];
for(int i=1;i<=m;i++)
scanf("%d",&y[i]);
for(int i=1;i<=m;i++)
scanf("%d",&x[i]);
for(int i=1;i<=m;i++)
{
int t=1;
while(x[i]>t)
//将每张钱有多少张即t进行二进制拆分,例如将9