#include #include #include using namespace std; typedef long long ll; const ll INF = 1e18; // ???????? int main() { // ??????? ios_base::sync_with_stdio(false); cin.tie(NULL); int n; ll m; if (!(cin >> n >> m)) return 0; vector a(n + 1), b(n + 1); for (int i = 1; i <= n; i++) { cin >> a[i] >> b[i]; } // pref_P[i] ?? max(A[j], B[j]) ???? (1 <= j <= i) vector pref_P(n + 1, 0); // pref_A[i] ?? A[j] ???? (1 <= j <= i) vector pref_A(n + 1, 0); // ?????? for (int i = 1; i <= n; i++) { pref_P[i] = pref_P[i - 1] + max(a[i], b[i]); pref_A[i] = pref_A[i - 1] + a[i]; } // max_pref_A[i] ??? 1 <= Y <= i ??????? pref_A[Y] vector max_pref_A(n + 1, -INF); max_pref_A[1] = pref_A[1]; // ???? K >= 1???????????? for (int i = 2; i <= n; i++) { max_pref_A[i] = max(max_pref_A[i - 1], pref_A[i]); } ll ans = -INF; // ?? M ??????? K ??????? X? for (int X = 1; X <= n; X++) { // ????????1 ? X ? X ?????? max(A, B) ll base_score = pref_P[X]; // ??????????? M-1 ????????????? Y (1 <= Y <= X) // ?? A ?????? ll extra_score = 0; if (m > 1) { extra_score = (m - 1) * max_pref_A[X]; } ans = max(ans, base_score + extra_score); } cout << ans << "\n"; return 0; }