fork download
  1. // huu khanh chy
  2.  
  3. // #pragma once
  4. // #pragma GCC optimize("Os")
  5. // #pragma GCC optimize("O2")
  6. // #pragma GCC target("fma")
  7. // #pragma GCC target("sse,sse2")
  8. // #pragma GCC target("sse3,ssse3")
  9. // #pragma GCC target("sse4.1,sse4.2")
  10. // #pragma GCC target("bmi,bmi2")
  11. // #pragma GCC target("popcnt,lzcnt")
  12. // #pragma GCC optimize("inline")
  13. // #pragma GCC optimize("fast-math")
  14. // #pragma GCC optimize("Ofast")
  15.  
  16. // #define anhnguyet_huukhanh
  17. #ifdef anhnguyet_huukhanh
  18. #pragma GCC optimize("O3")
  19. #pragma GCC optimize("unroll-loops")
  20. #pragma GCC target("avx,avx2")
  21. #endif
  22.  
  23. #include <bits/stdc++.h>
  24.  
  25. #define FOR(i, n) for(long long (i) = 0; (i) < (n); ++(i))
  26. #define forr(i, l, r) for (long long i = (l); i <= (r); ++i)
  27. #define rfor(i, r, l) for (long long i = (r); i >= (l); --i)
  28. #define SORT(a) sort((a).begin(), (a).end())
  29. #define RSORT(a) sort((a).begin(), (a).end(), greater<long long>())
  30. #define sortt(a, type) sort((a).begin(), (a).end(), type)
  31. #define for_Cout(a, char) for (auto c : (a)) cout << c << char;
  32. #define REV(s) reverse((s).begin(), (s).end())
  33. #define mset(a, valueptr) memset(a, valueptr, sizeof a)
  34. #define biton(x, i) ((x) >> (i) & 1)
  35. #define MASK(i) (1ll << (i))
  36. #define TIME cerr << "Time: " << 1.0 * clock() / CLOCKS_PER_SEC << "s\n"
  37. #define F first
  38. #define S second
  39. #define pub push_back
  40. #define ins insert
  41. #define All(x) (x).begin(), (x).end()
  42. #define pii pair<int, int>
  43. #define pli pair<long long, int>
  44. #define pll pair<long long, long long>
  45. #define vll vector<long long>
  46. #define vit vector<int>
  47. #define vbl vector<bool>
  48. #define vstr vector<string>
  49. #define v(datatype) vector<datatype>
  50. #define vvll vector<vector<long long>>
  51. #define TASK "name"
  52.  
  53. template<typename... value> void inall(value&... valueofvalue) { ((std::cin >> valueofvalue), ...); }
  54. template<typename... value> void outall(char valueofchar, const value&... valueofvalue) { ((std::cout << valueofvalue << valueofchar), ...); std::cout << valueofchar; }
  55. template<class X, class Y> bool maximize(X& x, const Y& y) { if (x < y) { x = y; return true; } return false; }
  56. template<class X, class Y> bool minimize(X& x, const Y& y) { if (x > y) { x = y; return true; } return false; }
  57.  
  58. using namespace std;
  59.  
  60. inline void fastIO() noexcept(true) { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); }
  61. inline long long ucln(long long a, long long b) { while (a != 0) { long long uc = a; a = b % a ; b = uc; } return b; }
  62. inline long long bcnn(long long a, long long b) { long long res = (a * b) / ucln(a, b); return res; }
  63. inline long long luythua(long long a, long long b) { long long res = 1; while (b) { if (b & 1) { res *= a; } a = a * a; b >>= 1; } return res; }
  64. inline long long giathua(long long num) { unsigned long long res = 1; for (unsigned long long i = 2; i <= num; ++i) res *= i; return res; }
  65. inline long long luythualaydu (long long a, long long b, long long mod) { long long res = 1; a = a % mod; while (b > 0) { if (b & 1) { res = (res * a) % mod; } a = (a * a) % mod; b >>= 1; } return res; }
  66. inline long long giathualaydu (long long num, long long mod) { unsigned long long res = 1; for (unsigned long long i = 2; i <= num; ++i) res = (res * i) % mod; return res; }
  67.  
  68. typedef short sh;
  69. typedef char cr;
  70. typedef string str;
  71. typedef long long ll;
  72. typedef unsigned long long ull;
  73. typedef double db;
  74. typedef bool bl;
  75. typedef long double ldb;
  76.  
  77. constexpr long long MOD1 = 1000000007LL;
  78. constexpr long long MOD2 = 1000000009LL;
  79. constexpr long long MOD3 = 2147483647LL;
  80. constexpr long long INF = 1000000000000000000LL;
  81. constexpr int base1= 310;
  82. constexpr int base2 = 256;
  83. constexpr long long MAXn = 300007;
  84.  
  85. int n, m;
  86. vector<int> a(MAXn);
  87. vector<pair<int, int>> b(MAXn);
  88. vector<int> diff_(MAXn);
  89. vector<int> cnt(MAXn);
  90. int main() {
  91. if (fopen(TASK".INP", "r")) {
  92. freopen(TASK".INP", "r", stdin);
  93. freopen(TASK".OUT", "w", stdout);
  94. }
  95. cin >> n >> m;
  96. for (int i = 1; i <= n; ++i) cin >> a[i];
  97. for (int i = 0; i < m; ++i) {
  98. cin >> b[i].first >> b[i].second;
  99. diff_[b[i].first]++;
  100. diff_[b[i].second + 1]--;
  101. }
  102. for (int i = 1; i <= n; ++i) {
  103. cnt[i] = cnt[i - 1] + diff_[i];
  104. }
  105. sort(cnt.begin() + 1, cnt.begin() + n + 1);
  106. sort(a.begin() + 1, a.begin() + n + 1);
  107. ll total = 0;
  108. for (int i = 1; i <= n; ++i) {
  109. total += cnt[i] * a[i];
  110. }
  111. cout << total << '\n';
  112. return 0;
  113. }
Success #stdin #stdout 0.01s 9076KB
stdin
Standard input is empty
stdout
0