Submission #763700

#TimeUsernameProblemLanguageResultExecution timeMemory
763700KriptonFish (IOI08_fish)C++14
4 / 100
3063 ms5760 KiB
#include <bits/stdc++.h> using namespace std; pair <int, int> v[500001]; int vf[500001], maxi[500001]; bitset <500001> checc; int k, m; int recalc() { int rez = 1; for(int i = 1; i <= k; i++) if(!checc[i]) rez = 1LL * rez * (vf[i] + 1) % m; return rez; } int recalc_fara(int j) { int rez = 1; for(int i = 1; i <= k; i++) if(i != j) rez = 1LL * rez * (vf[i] + 1) % m; return rez; } int main() { #ifdef HOME freopen("test.in", "r", stdin); freopen("test.out", "w", stdout); #endif // HOME int n; cin >> n >> k >> m; for(int i = 1; i <= n; i++) cin >> v[i].first >> v[i].second; sort(v + 1, v + n + 1); int j = 1; while(j <= n && 2 * v[j].first <= v[n].first) vf[v[j++].second]++; j--; for(int i = 1; i <= k; i++) maxi[i] = vf[i]; int cate = 0; for(int i = n; i >= 1; i--) { while(j >= 1 && 2 * v[j].first > v[i].first) vf[v[j--].second]--; if(!checc[v[i].second]) { if(vf[v[i].second] == maxi[v[i].second]) { cate = (cate + recalc_fara(v[i].second)) % m; vf[v[i].second]--; cate = (cate + recalc()) % m; vf[v[i].second]++; } else cate = (cate + recalc()) % m; checc[v[i].second] = 1; } } cout << cate; return 0; }
#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...