제출 #1281586

#제출 시각아이디문제언어결과실행 시간메모리
1281586Faisal_SaqibBank (IZhO14_bank)C++20
100 / 100
264 ms11808 KiB
/* VENI VIDI VICI */ // #pragma GCC optimize("Ofast","unroll-all-loops","fast-math","no-stack-protector","give-no-fuck") #include <bits/stdc++.h> // #include <iostream> // #include <vector> // #include <algorithm> // #include <set> // #include <map> using namespace std; #define fi first #define se second #define pb push_back #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() #define rep(i,x, n) for (int i = (x); i < (n); ++i) #define repr(i,x, n) for (int i = (n) - 1; i >= (x); --i) mt19937 RNG(chrono::steady_clock::now().time_since_epoch().count()); // #define sum accumulate //using i128 = __int128; using ll = long long; using ull = unsigned long long; using ld = long double; using str = string; using pi = pair<int, int>; using pl = pair<ll, ll>; using vi = vector<int>; using vl = vector<ll>; using vpi = vector<pair<int, int>>; using vvi = vector<vi>; using sll = set<ll>; template<class T> istream& operator>>(istream& is, vector<T>& v) { for(auto &i:v) is>>i; return is; } template<class T1,class T2> istream& operator>>(istream& is, pair<T1,T2>& p) { is>>p.fi>>p.se; return is; } template<class T> ostream& operator<<(ostream& os, const vector<T>& v) { for(const auto &i:v) os<<i<<' '; return os; } template<class T1,class T2> ostream& operator<<(ostream& os, const pair<T1,T2>& p) { os<<p.fi<<' '<<p.se; return os; } void pyn(bool x) { cout<<(x?"YES":"NO")<<endl; } void pYN(bool x) { cout<<(x?"Yes":"No")<<endl; } void pAB(bool x) { cout<<(x?"Alice":"Bob")<<endl; } ll powmod(ll a,ll b,ll modulo) { if(b==0){ return 1; } ll temp=powmod(a,b/2,modulo); if(b%2==0){ return (temp*temp)%modulo; } else{ return (a*((temp*temp)%modulo))%modulo; } } bool Prime(ll n){ for (ll i = 2; i*i <= n; i++) if (n % i == 0) return false; return (n>1); } void readIO() { freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); } void solve(); int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); // readIO(); int uwu=1; // cin>>uwu; for(int tc=1;tc<=uwu;tc++) { // cout<<"Case #"<<tc<<": "; solve(); } return 0; } const int N=22,K=(1<<20)+100; bitset<K> dp[N]; int a[N],b[N],sm[K]; vector<int> ind[K]; void solve() { ll n,m; cin>>n>>m; for(int i=0;i<n;i++)cin>>a[i]; for(int j=0;j<m;j++)cin>>b[j]; int tot=(1<<m)-1; dp[0][0]=1; // for(int i=0;i<n;i++) // { // cout<<ind[a[i]].size()<<' '<<a[i]<<' '<<i<<endl; // } // sleep(2); for(int mk=0;mk<(1<<m);mk++) { for(int i=0;i<m;i++) { if((mk>>i)&1) { sm[mk]+=b[i]; } } if(sm[mk]<=1000) { // cout<<"At "<<mk<<' '<<sm[mk]<<endl; ind[sm[mk]].pb(mk); } } // cout<<ind[9].size()<<endl; // for (auto i:ind[9]) // cout<<i<<' '; // cout<<endl; // exit(0); for(int i=0;i<n;i++) { // cout<<"Index: "; // for(auto j:ind[a[i]]) // { // cout<<j<<' '; // } // cout<<endl; // we have to make the sum equal to for(int k=dp[i]._Find_first();k<(1<<m);k=dp[i]._Find_next(k)) { // for(int j=k;j>0;j=(j-1)&k) // { // dp[i+1].set(k^j); // } // // cout<<"SZ "<<ind[a[i]].size()<<endl; // // cout<<ind[a[i]].size()<<' '<<a[i]<<' '<<i<<endl; for(auto j:ind[a[i]]) { if((k&j)==0) { dp[i+1].set(k|j); } } } } if(dp[n].any()) { cout<<"YES"<<endl; } else { cout<<"NO"<<endl; } }

컴파일 시 표준 에러 (stderr) 메시지

bank.cpp: In function 'void readIO()':
bank.cpp:90:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   90 |     freopen("input.txt", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
bank.cpp:91:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   91 |     freopen("output.txt", "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...