제출 #542864

#제출 시각아이디문제언어결과실행 시간메모리
542864colossal_pepe송금 (JOI19_remittance)C++17
15 / 100
48 ms79804 KiB
#include <iostream> #include <vector> #include <cstring> using namespace std; typedef long long ll; const int MAXN = 7; int n, power10[8] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000}; int dp[10000000 + 5], a[MAXN + 5], b[MAXN + 5], idb, sb; bool brutus(int arr[]) { int id = 0, sa = 0; for (int i = 0; i < n; i++) { sa += arr[i]; id += power10[i] * arr[i]; } if (sa < sb) return 0; if (dp[id] != -1) return dp[id]; dp[id] = 0; for (int i = 0; i < n; i++) { if (arr[i] > 1) { arr[i] -= 2; arr[(i + 1) % n] += 1; dp[id] |= brutus(arr); arr[i] += 2; arr[(i + 1) % n] -= 1; } } return dp[id]; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); memset(dp, -1, sizeof(dp)); cin >> n; idb = 0, sb = 0; for (int i = 0; i < n; i++) { cin >> a[i] >> b[i]; sb += b[i]; idb += power10[i] * b[i]; } dp[idb] = 1; cout << (brutus(a) ? "Yes" : "No") << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...