結果

問題 No.2681 ゲームセンターの両替
ユーザー yansi819
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#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;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0