Snuke Prime
問題
D – Snuke Prime
プログラミング初級者から上級者まで楽しめる、競技プログラミングコンテストサイト「AtCoder」。オンラインで毎週開催プログラミングコンテストを開催しています。競技…
記録
- 2021/1/20 解法はなんとなくわかったが、実装できず。
解法
- \(a_i\) や \(b_i\) は座標圧縮的な考え方で管理する。
コード例
#include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; using ll = long long; using P = pair<ll, ll>; #define rep(i, n) for(int i = 0; i < (n); ++i) // using mint = modint998244353; // using mint = modint1000000007; // const int mod = 1000000007; // const ll INF = 1LL << 62; // const int INF = 1001001001; int main() { ll N, C; cin >> N >> C; map<ll, ll> mp; ll last = 0; rep(i, N) { ll a, b, c; cin >> a >> b >> c; a--; b--; mp[a] += c; mp[b + 1] -= c; } ll ans = 0; ll cost = 0; ll current = 0; for(auto i : mp) { if(cost < C) { ans += cost * (i.first - current); } else { ans += C * (i.first - current); } cost += i.second; current = i.first; } cout << ans << endl; return 0; }