結果
| 問題 |
No.2197 Same Dish
|
| コンテスト | |
| ユーザー |
nono00
|
| 提出日時 | 2023-01-20 22:22:12 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,192 bytes |
| コンパイル時間 | 2,070 ms |
| コンパイル使用メモリ | 205,224 KB |
| 最終ジャッジ日時 | 2025-02-10 04:59:15 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 6 WA * 14 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
constexpr long long mod = 998244353;
long long pow_mod(long long x, long long y, long long p) {
long long result = 1;
while (y > 0) {
if ((y & 1) == 1) {
result *= x;
result %= p;
}
y >>= 1;
x *= x;
x %= p;
}
return result;
}
void solve() {
int n, k;
cin >> n >> k;
vector<pair<int, int>> lr;
lr.reserve(n);
for (int i = 0; i < n; i++) {
int l, r;
cin >> l >> r;
lr.emplace_back(l, r);
}
sort(lr.begin(), lr.end());
long long ans = 1;
// hpの中に入っているのはr
priority_queue<int> hp;
for (auto &[l, r]: lr) {
// すでに退出した人を削除
while (!hp.empty() && hp.top() <= l) {
hp.pop();
}
// hp.size() が今店内にいる人
ans *= max(0LL, k - (long long)hp.size());
ans %= mod;
hp.push(r);
}
ans = pow_mod(k, n, mod) - ans;
if (ans < 0) {
ans += mod;
}
cout << ans << '\n';
}
int main() {
int q = 1;
// cin >> q;
while (q--) {
solve();
}
}
nono00