← Back to List

17521번: Byte Coin ↗

Solutions

C++14
1.6 KB | 1688 chars
#include <bits/stdc++.h>
#include <vector>
using namespace std;
typedef long long ll;

ll N, money, coin;
ll a;

vector <ll> G,G2;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    cin >> N >> money;
    for(int x = 0; x < N; x++) {
        cin >> a;
        if(x==0) {
            G.push_back(a);
        }
        else if(G[G.size()-1] != a){
            G.push_back(a);
        }
    }

    G2.push_back(G[0]);
    int cnt = 1;
    for(int i = 1; i < G.size(); i++) {
        if(i+1 < G.size()) {
            if((G2[cnt-1] < G[i] && G[i] < G[i+1]) || (G2[cnt-1] > G[i] && G[i] > G[i+1])) {
                continue;
            } 
            else {
                cnt++;
                G2.push_back(G[i]);
            }
        }
        else {
            cnt++;
            G2.push_back(G[i]);
        }
    }


    if(cnt > 1 && G2[0] > G2[1]) {
        G2.erase(G2.begin());
        cnt--;
    }

    if(cnt > 1 && G2[G2.size()-2] > G2[G2.size()-1]) {
        G2.erase(G2.begin()+G2.size()-1);
        cnt--;
    }

    for(int i = 0; i < G2.size(); i++) {
        if(i==0 && i != G2.size() -1) {
            ll buy = money / G2[i];
            coin = buy;
            money = money - buy * G2[i];
        }
        else if(i == G2.size() -1) {
            money += coin * G2[i];
            coin = 0;
        }
        else {
            if(G2[i-1] < G2[i] && G2[i] > G2[i+1]) {
                money += coin * G2[i];
                coin = 0;
            }
            else {
                ll buy = money / G2[i];
                coin = buy;
                money = money - buy * G2[i];
            }
        }
    }

    cout << money;

}