Submission #898418

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