Submission #734055

#TimeUsernameProblemLanguageResultExecution timeMemory
734055lorenzoferrariFish (IOI08_fish)C++17
68 / 100
3059 ms17684 KiB
#include "bits/stdc++.h" using namespace std; struct fish { int l; int g; bool operator<(const fish& oth) { return l < oth.l; } }; signed main() { int n; cin >> n; int k; cin >> k; int m; cin >> m; vector<fish> a(n); for (int i = 0; i < n; ++i) { cin >> a[i].l >> a[i].g; --a[i].g; } sort(begin(a), end(a)); vector<vector<int>> o(k); vector<int> last(k); for (int i = 0; i < n; ++i) { o[a[i].g].emplace_back(a[i].l); last[a[i].g] = i; } int ans = 0; vector<int> rs; vector<int> frq(k); for (int r = 0, l = 0; r < n; ++r) { int c = a[r].g; if (last[c] != r) continue; while (2*a[l].l <= a[r].l) { ++frq[a[l].g]; ++l; } int cur = 1; for (int i : rs) { cur = (cur * (frq[i] % m + 1)) % m; } rs.push_back(c); cur = cur * (frq[c] % m) % m; int oth = 1; for (int i = 0; i < k; ++i) { if (i == c) continue; if (2*o[c][frq[c]] <= o[i].back()) continue; oth = oth * (frq[i] + 1) % m; } ans = (ans + cur + oth) % 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...