제출 #1345935

#제출 시각아이디문제언어결과실행 시간메모리
1345935kaze666Fish (IOI08_fish)C++20
0 / 100
121 ms9052 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int F, K, M;
    cin >> F >> K >> M;
    vector<pair<ll,int>> a(F);
    for (int i = 0; i < F; i++) {
        cin >> a[i].first >> a[i].second;
        a[i].second--; 
    }

    sort(a.begin(), a.end());

    vector<int> cnt(K, 0);
    ll cur = 1; 
    ll ans = 0;

    int l = 0;
    auto modpow = [&](ll a, ll e) {
        ll r = 1;
        while (e) {
            if (e & 1) r = r * a % M;
            a = a * a % M;
            e >>= 1;
        }
        return r;
    };

    auto inv = [&](ll x) {
        return modpow(x, M - 2);
    };

    for (int i = 0; i < F; i++) {
        while (l < i && a[l].first * 2 > a[i].first) {
            int t = a[l].second;
            cur = cur * inv(cnt[t] + 1) % M;
            cnt[t]--;
            cur = cur * (cnt[t] + 1) % M;
            l++;
        }
        int t = a[i].second;
        cur = cur * inv(cnt[t] + 1) % M;
        cnt[t]++;
        cur = cur * (cnt[t] + 1) % M;
        ans = (ans + cur - 1 + M) % M;
    }
    cout << ans << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...