#include <iostream> #include <cmath> #define LL long long #define MAX_SIZE 210000 using namespace std; void add_coin(unsigned int coin, bool *coins, unsigned int &max_coin) { if (coins[coin]) { coins[coin] = false; add_coin(coin + 1, coins, max_coin); } else { coins[coin] = true; if (coin > max_coin) max_coin = coin; } } int main() { unsigned int N, coin, max_coin = 0; bool coins[MAX_SIZE]; for (unsigned int i = 0; i < MAX_SIZE; i++ ) coins[i] = false; cin >> N; for (unsigned int i = 0; i < N; i++) { cin >> coin; add_coin(coin, coins, max_coin); } cout << max_coin << endl; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include <iostream> #include <cmath> #define LL long long #define MAX_SIZE 210000 using namespace std; void add_coin(unsigned int coin, bool *coins, unsigned int &max_coin) { if (coins[coin]) { coins[coin] = false; add_coin(coin + 1, coins, max_coin); } else { coins[coin] = true; if (coin > max_coin) max_coin = coin; } } int main() { unsigned int N, coin, max_coin = 0; bool coins[MAX_SIZE]; for (unsigned int i = 0; i < MAX_SIZE; i++ ) coins[i] = false; cin >> N; for (unsigned int i = 0; i < N; i++) { cin >> coin; add_coin(coin, coins, max_coin); } cout << max_coin << endl; return 0; } |