Submission #1019557

#TimeUsernameProblemLanguageResultExecution timeMemory
1019557vjudge1Fish (IOI08_fish)C++17
63 / 100
3067 ms39508 KiB
#include<bits/stdc++.h> using namespace std; #define int long long int mod=0,ans,cnt[500010],cnt2[500010]; vector<int>S[500010]; inline int cntof(int i,int j){ return lower_bound(S[j].begin(),S[j].end(),S[i].back()+2>>1)-S[j].begin(); } void dothestuf(vector<int>bad,int k,int l){ memcpy(cnt2,cnt,sizeof cnt); for(auto f:bad) cnt2[f]=0; long long x=1; for(int i=1;i<=l;i++) x=(x*(cnt2[i]+1))%mod; ans=(ans+mod+x*k)%mod; } vector<int>order; signed 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++){ vector<int> v,v2; for(int j=k;j>i;j--) v.push_back(j); for(int j=1;j<=k;j++) cnt[j]=cntof(i,j); cnt[i]--; dothestuf(v,1,k); int kv=S[i][cnt[i]+1]; for(auto x:v) if(S[x].back()>=2*kv) v2.push_back(x); else break; dothestuf(v2,-1,k); cnt[i]++; dothestuf(v2,1,k); } cout<<ans; }

Compilation message (stderr)

fish.cpp: In function 'long long int cntof(long long int, long long int)':
fish.cpp:7:59: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
    7 |     return lower_bound(S[j].begin(),S[j].end(),S[i].back()+2>>1)-S[j].begin();
      |                                                ~~~~~~~~~~~^~
#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...