Submission #898409

#TimeUsernameProblemLanguageResultExecution timeMemory
898409abcvuitunggioFish (IOI08_fish)C++17
0 / 100
3057 ms41044 KiB
#include <bits/stdc++.h> #define int long long using namespace std; int n,k,m,res; pair <int, int> f[500001]; map <int, int> pos,ch,ban,cnt; int32_t main(){ ios_base::sync_with_stdio(NULL);cin.tie(nullptr); cin >> n >> k >> m; for (int i=0;i<n;i++){ cin >> f[i].first >> f[i].second; if (!pos.count(f[i].second)) pos[f[i].second]=f[i].first; pos[f[i].second]=min(pos[f[i].second],f[i].first); } sort(f,f+n); cout << '\n'; for (int i=0;i<n;i++) cout << f[i].first << ' ' << f[i].second << '\n'; for (int i=n-1;i>=0;i--){ if (ch.count(f[i].second)) continue; for (int j=n-1;j>i;j--) if (f[j].first>=pos[f[i].second]*2) ban[f[j].second]=1; for (int j=0;j<i;j++) if (f[j].first*2<=f[i].first) cnt[f[j].second]++; int x=1; ban[f[i].second]=1; for (auto [i,j]:cnt) if (!ban.count(i)) x=x*(j+1)%m; res=(res+x*(cnt[f[i].second]+1))%m; ch[f[i].second]=i; int l=0; for (int j=0;j<n;j++) if (f[j].first*2>f[i].first&&f[j].second==f[i].second){ l=f[j].first; break; } int y=1; for (int j=i+1;j<n;j++) if (f[j].first>=pos[f[i].second]*2&&l*2>f[j].first&&ch[f[j].second]==j) y=y*(cnt[f[j].second]+1)%m; res=(res+x*(y+m-1))%m; ban.clear(); cnt.clear(); } cout << res; }
#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...