比赛 2020级再出发之位运算 评测结果 AAAAAAAAAA
题目名称 买表(民间数据) 最终得分 100
用户昵称 ┭┮﹏┭┮ 运行时间 4.546 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2023-07-25 18:27:25
显示代码纯文本
#include <bits/stdc++.h>
#include <bitset>
using namespace std;
bitset<5000000> s;
int n,m;
int main(){
    freopen("noi_online2020_watch.in","r",stdin);
    freopen("noi_online2020_watch.out","w",stdout);
    scanf("%d%d",&n,&m);
    s[0] = 1;
    for(int i = 1;i <= n;i++){
        int x,y;
        scanf("%d%d",&x,&y);
        int p = 1;
        while(y >= p){
            y -= p;
            s |= (s << (x * p));
            p <<= 1;
        } 
        if(y > 0){
            s |= (s << (x * y));
        }
    }
    for(int i = 1;i <= m;i++){
        int x;
        scanf("%d",&x);
        if(s[x])printf("Yes\n");
        else printf("No\n");
    }
    
    return 0;
}