Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- //#pragma gcc optimize("Ofast,unroll-loops")
- //#pragma gcc target("sse,sse2,sse3,ssse3,sse4,avx,avx2,fma,abm,mmx,popcnt,tune=native")
- //#define int long long
- //#define double long double
- #define MP make_pair
- #define F first
- #define S second
- #define MOD 43200000000000
- signed main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- int N, K;
- cin >> N >> K;
- vector<int> c(K), d(K);
- for (int i = 0; i < K; i++)
- cin >> c[i] >> d[i];
- vector<long long> dp1(K);
- for (int i = K - 1; i >= 0; i--)
- if (i == K - 1 || c[i] > c[i + 1] || d[i] > d[i + 1])
- dp1[i] = d[i];
- else
- dp1[i] = dp1[i + 1] + 1;
- vector<long long> dp2(K);
- for (int i = K - 1; i >= 0; i--)
- if (i == K - 1 || c[i] > c[i + 1])
- dp2[i] = dp1[i] * (dp1[i] + 1) / 2;
- else if (d[i] <= d[i + 1])
- dp2[i] = (dp1[i + 1] + 1) * d[i];
- else
- dp2[i] = (dp1[i + 1] + 1) * d[i + 1] + (long long)(d[i] + d[i + 1] + 1) * (d[i] - d[i + 1]) / 2;
- long long ans = 0;
- for (long long i : dp2)
- ans += i;
- cout << ans << '\n';
- return 0;
- }
- // * * ***** * * * * **** **** **** ** **
- // * * * ** * * * * * * * * * * *
- // ***** ***** * * * * * * **** * * * *
- // * * * * ** * * * * * * ***** *
- // * * ***** * * *** **** * * **** * *****
- // ***** ***** * * * ***** * * ***** *****
- // * * * * * * * ** * * * *
- // * * * ***** * * * * * * *****
- // * * * * * * * * ** * *
- // **** ***** * ***** ***** * * * *
Advertisement
Add Comment
Please, Sign In to add comment