結果
問題 | No.2681 ゲームセンターの両替 |
ユーザー |
|
提出日時 | 2024-03-23 10:29:50 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 24 ms / 2,000 ms |
コード長 | 2,317 bytes |
コンパイル時間 | 4,705 ms |
コンパイル使用メモリ | 257,888 KB |
最終ジャッジ日時 | 2025-02-20 13:07:54 |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 |
ソースコード
#include <bits/stdc++.h>#include <atcoder/all>using namespace std;using namespace atcoder;using ll = long long;using ld = long double;int C, Y, X;int tsuka[10] = {10000, 5000, 2000, 1000, 500, 100, 50, 10, 5, 1};map<int, int> mp;int main() {cin >> C >> Y;for (int i = 0; i < 10; i++) {mp[tsuka[i]] = Y / tsuka[i];Y %= tsuka[i];}if (mp[100] >= C) {cout << "no exchange" << endl;return 0;}for (auto p: mp) {X += p.first / 100 * p.second;}if (X < C) {cout << "can't exchange" << endl;return 0;}X = mp[100];while (mp[500] > 0 || X < C) {mp[500]--;X += 5;}if (X >= C) {cout << X << endl;return 0;}while (mp[1000] > 0 || X < C) {mp[1000]--;if (X + 5 >= C) X += 5;else X += 10;}if (X >= C) {cout << X << endl;return 0;}while (mp[2000] > 0 || X < C) {mp[2000]--;if (X + 5 >= C) X += 5;else if (X + 10 >= C) X += 10;else if (X + 15 >= C) X += 15;else X += 20;}if (X >= C) {cout << X << endl;return 0;}while (mp[5000] > 0 || X < C) {mp[5000]--;if (X + 5 >= C) X += 5;else if (X + 10 >= C) X += 10;else if (X + 15 >= C) X += 15;else if (X + 20 >= C) X += 20;else if (X + 25 >= C) X += 25;else if (X + 30 >= C) X += 30;else if (X + 35 >= C) X += 35;else if (X + 40 >= C) X += 40;else if (X + 45 >= C) X += 45;else X += 50;}if (X >= C) {cout << X << endl;return 0;}while (mp[10000] > 0) {mp[10000]--;if (X + 5 >= C) X += 5;else if (X + 10 >= C) X += 10;else if (X + 15 >= C) X += 15;else if (X + 20 >= C) X += 20;else if (X + 25 >= C) X += 25;else if (X + 30 >= C) X += 30;else if (X + 35 >= C) X += 35;else if (X + 40 >= C) X += 40;else if (X + 45 >= C) X += 45;else if (X + 50 >= C) X += 50;else if (X + 55 >= C) X += 55;else if (X + 60 >= C) X += 60;else if (X + 65 >= C) X += 65;else if (X + 70 >= C) X += 70;else if (X + 75 >= C) X += 75;else if (X + 80 >= C) X += 80;else if (X + 85 >= C) X += 85;else if (X + 90 >= C) X += 90;else if (X + 95 >= C) X += 95;else X += 100;}if (X >= C) {cout << X << endl;return 0;}return 0;}