AtCoder Grand Contest 003 B - Simplified mahjong
- 問題
- 解法
先頭から順に見ていく。ペアを作れるだけ作って、カードが余るなら(1枚だけ余る)そのカードを次の値のカード1枚と組み合わせる。これを繰り返す。
#include <iostream> #include <string> #include <algorithm> #include <cstdio> #include <vector> #include <queue> #include <set> #include <numeric> #include <cmath> using namespace std; typedef long long int ll; #define all(x) x.begin(),x.end() const ll mod = 1e9+7; const ll INF = 1e9; const ll MAXN = 1e9; int main() { ll n; cin >> n; vector<ll> a(n); for(int i = 0; i < n; i++){ cin >> a[i]; } ll ans = 0; for(int i = 0; i < n; i++){ if(a[i] > 0){ if(i>0 && a[i-1] == 1){ ans += 1; a[i]--; } ans += a[i]/2; a[i] %= 2; } } cout << ans << endl; return 0; }