제출 #875946

#제출 시각아이디문제언어결과실행 시간메모리
875946auslander은행 (IZhO14_bank)C++17
44 / 100
23 ms460 KiB
#include <iostream> #include <algorithm> #include <math.h> #include <sstream> #include <string> #include <iomanip> #include <queue> #include <stack> #include <deque> #include <set> #include <map> #include <vector> #include <iterator> using namespace std; //defines #define ll long long #define usg unsigned #define kap map #define print(x, n) for(int for_loop = 0; for_loop < n; for_loop++){cout<<x[for_loop]<<' ';}cout<<endl; #define read(x, n) for(int for_loop = 0; for_loop < n; for_loop++){cin>>x[for_loop];} #define speed ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); #define ratdig(x) cout << fixed << setprecision(x); #define xfixdig(x) cout << setprecision(x); #define multi int t; cin>>t; presolve(); while(t--) solve() #define single presolve(); solve(); return 0 #define rev(x) reverse(x.begin(), x.end()) #define all(x) x.begin(), x.end() //functions void yn(bool b) { if (b) { cout << "YES\n"; return; } cout << "NO\n"; } ll gcd(ll a, ll b) { if (a == 0) return b; if (b == 0) return a; return gcd(b % a, a); } ll lcm(ll a, ll b) { return (a * b) / gcd(a, b); } string to2(ll a) { string r = ""; for (ll i = a; i > 0; ) { ll k = i % 2; i /= 2; char c = k + 48; r += c; } if (a == 0) { r = "0"; } rev(r); return r; } ll binpow(ll a, ll b, ll mod = -1) { ll ans = 1; while (b) { if ((b & 1) == 1) { ans *= a; if (mod != -1) ans %= mod; } b >>= 1; a *= a; if (mod != -1) a %= mod; } return ans; } //body void presolve() { } ll a[35], b[35]; bool d[1005]; void usapark(int m) { ll i, j, k, n = 1; cin >> k; for (i = 0; i < m; i++) { cin >> b[i]; } sort(b, b + m); for (i = m - 1; i >= 0; i--) { for (j = k; j >= 0; j--) { if (!d[j]) continue; if (j + b[i] <= 1000) d[j + b[i]] = true; if (j + b[i] == k) { yn(1); return; } } d[b[i]] = true; if (b[i] == k) { yn(1); return; } } yn(0); } void auslander(int n, int m) { ll i, j, k; for (i = 0; i < n; i++) { cin >> a[i]; } for (i = 0; i < m; i++) { cin >> b[i]; } sort(a, a + n); sort(b, b + m); do { j = 0; k = 0; bool bl = true; for (i = 0; i < m; i++) { k += b[i]; if (j == n) break; if (a[j] == k) { j++; k = 0; } else if (a[j] < k) { bl = false; break; } } if (!bl) continue; yn(1); return; } while (next_permutation(b, b + m)); yn(0); return; } void solve() { int n, m; cin >> n >> m; if (n == 1) { usapark(m); } else if (m <= 10) { auslander(n, m); } else { int i; for (i = 0; i < n; i++) { cin >> a[i]; } for (i = 0; i < m; i++) { cin >> b[i]; } yn(1); } } int main() { speed; single; multi; return 0; }

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

bank.cpp: In function 'void usapark(int)':
bank.cpp:103:14: warning: unused variable 'n' [-Wunused-variable]
  103 |  ll i, j, k, n = 1;
      |              ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...