diff --git a/src/7/22/P6567.cpp b/src/7/22/P6567.cpp index 3d9de9d..18c1765 100644 --- a/src/7/22/P6567.cpp +++ b/src/7/22/P6567.cpp @@ -1,17 +1,13 @@ -#include +#include #include #include #include -#include -#include -#include -#include using ll = int64_t; ll n,m; -std::vector k,a; -std::vector> t; +// std::vector k,a; +// std::vector> t; template void log(Ts&&...ts){ @@ -19,44 +15,49 @@ void log(Ts&&...ts){ // ((std::cout< s; -namespace c1{ - std::set s; - ll max{}; - void static inline dfs(ll d,ll nsum){ - if(nsum>max)return; - if(d>n){ - s.insert(nsum); - log("nsum:",nsum); - return; - } - for(ll i=0;i<=a[d];i++){ - dfs(d+1,nsum+k[d]*i); - } - } -} +// void static inline dfs(ll d,ll nsum){ +// if(nsum>max)return; +// if(d>n){ +// s.insert(nsum); +// log("nsum:",nsum); +// return; +// } +// for(ll i=0;i<=a[d];i++){ +// dfs(d+1,nsum+k[d]*i); +// } +// } +// } + +std::bitset<500000+5> bs; int main(){ std::iostream::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); - + bs[0]=1; std::cin>>n>>m; - k.resize(n+1); - a.resize(n+1); - t.resize(m+1); + // k.resize(n+1); + // a.resize(n+1); + // t.resize(m+1); for(ll i=1;i<=n;i++){ - std::cin>>k[i]>>a[i]; + ll k,a; + std::cin>>k>>a; + for(ll b=1;b<=a;b<<=1){ + bs|=bs<0){ + bs|=bs<>t[i].first; - t[i].second=i; - c1::max=std::max(c1::max,t[i].first); - } - using namespace c1; - dfs(1, 0); - for(ll i=1;i>t; + if(bs[t]){ std::cout<<"Yes\n"; }else{ std::cout<<"No\n";