#include #include using namespace std; using ll = long long; using P = pair; int main() { // DP[Nセット目まで見た][前回先置き採用はL:0, R:1] := デカいスコア int N; cin >> N; vector

xy(N); for (int i=0;i> xy[i].first >> xy[i].second; vector DP(N+1, vector(2, 0)); for (int i=0;il ll mx_ll = DP[i][0] + ((xy[i].second == xy[i+1].first) ? xy[i+1].first : 0); DP[i+1][0] = max(DP[i+1][0], mx_ll); // l->r ll mx_lr = DP[i][0] + ((xy[i].second == xy[i+1].second) ? xy[i+1].second : 0); DP[i+1][1] = max(DP[i+1][1], mx_lr); // r->l ll mx_rl = DP[i][1] + ((xy[i].first == xy[i+1].first) ? xy[i+1].first : 0); DP[i+1][0] = max(DP[i+1][0], mx_rl); // r->r ll mx_rr = DP[i][1] + ((xy[i].first == xy[i+1].second) ? xy[i+1].second : 0); DP[i+1][1] = max(DP[i+1][1], mx_rr); } cout << max(DP[N][0], DP[N][1]) << endl; }