Submission #688367

#TimeUsernameProblemLanguageResultExecution timeMemory
688367finn__Fish (IOI08_fish)C++17
21 / 100
312 ms65536 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); size_t n, k, m; cin >> n >> k >> m; vector<pair<unsigned, unsigned>> fish(n); vector<pair<unsigned, unsigned>> largest(k, {0, 0}); vector<unsigned> F(k, 0); for (auto &[l, g] : fish) { cin >> l >> g; g--; largest[g] = max(largest[g], {l, g}); F[g] = max(F[g], l); } sort(fish.begin(), fish.end()); sort(largest.begin(), largest.end()); vector<unsigned> c(k, 0); vector<vector<unsigned>> e(k, vector<unsigned>(k)); size_t p = 0; for (size_t i = 0; i < k; i++) { while (p < n && 2 * fish[p].first <= largest[i].first) { c[fish[p].second]++; p++; } for (size_t j = 0; j < k; j++) { e[largest[i].second][j] = c[j] % m; } } unsigned ans = 0; for (size_t i = 0; i < k; i++) { unsigned x = 1, y = 1; // Partial and full count. for (size_t j = 0; j < k; j++) { if (i == j) continue; if (!(e[j][i] >= e[i][i] + 1) && F[j] >= F[i]) y = (y * (e[i][j] + 1)) % m; else if (F[i] > F[j]) x = (x * (e[i][j] + 1)) % m, y = (y * (e[i][j] + 1)) % m; } ans = (ans + x * e[i][i]) % m; ans = (ans + y) % 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...