Submission #1019519

#TimeUsernameProblemLanguageResultExecution timeMemory
1019519vjudge1Fish (IOI08_fish)C++17
0 / 100
452 ms65536 KiB
#include<bits/stdc++.h> using namespace std; int cntof[7010][7010],mod=0,ans,cnt[7010],cnt2[7010]; vector<int>S[7010]; void dothestuf(vector<int>bad,int k){ memcpy(cnt2,cnt,sizeof cnt); for(auto f:bad) cnt2[f]=0; long long x=1; for(int i=1;i<=7e3;i++) x=(x*(cnt2[i]+1))%mod; ans=(ans+mod+x*k)%mod; } vector<int>order; int main(){ cin.tie(0)->sync_with_stdio(0); int n,k; cin>>n>>k>>mod; for(int i=1;i<=n;i++){ int a,b; cin>>a>>b; S[b].push_back(a); } for(int i=1;i<=k;i++) sort(S[i].begin(),S[i].end()); sort(S+1,S+k+1,[](vector<int>a,vector<int>b){ return a.back()<b.back(); }); for(int i=1;i<=k;i++) for(int j=1;j<=k;j++) cntof[i][j]=upper_bound(S[j].begin(),S[j].end(),S[i].back()/2)-S[j].begin(); for(int i=1;i<=k;i++){ vector<int> v,v2; for(int j=i;j++<k;) v.push_back(j); for(int j=1;j<=k;j++) cnt[j]=cntof[i][j]; dothestuf(v,1); for(auto x:v) if(cntof[x][i]<=cntof[i][i]) v2.push_back(x); else break; dothestuf(v2,-1); cntof[i][i]--; dothestuf(v2,1); v.clear(); dothestuf(v,-1); cntof[i][i]++; dothestuf(v,1); } cout<<ans; }
#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...