Submission #1206925

#TimeUsernameProblemLanguageResultExecution timeMemory
1206925emptypringlescanFestivals in JOI Kingdom 2 (JOI23_festival2)C++17
10 / 100
9094 ms436 KiB
#include <bits/stdc++.h> using namespace std; int n; long long ans=0; long long p; int32_t main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> n >> p; vector<int> arr; for(int i=1; i<=n; i++){ arr.push_back(0); } for(int i=1; i<=n; i++){ arr.push_back(1); } int ans=0; do{ int grr=0; bool ok=true; for(int i=0; i<2*n; i++){ if(arr[i]==0) grr++; else grr--; if(grr<0) ok=false; } if(!ok) continue; int brr[2*n]; vector<int> perm; for(int i=0; i<n; i++) perm.push_back(i); do{ vector<pair<int,int> > ran; int prev[n+1]; memset(prev,-1,sizeof(prev)); int good=0,cur=-1; int cnt=0,cnt2=0; bool ok2=true; for(int i=0; i<2*n; i++){ if(arr[i]==0){ brr[i]=cnt; cnt++; } else{ if(perm[cnt2]>=cnt){ ok2=false; break; } brr[i]=perm[cnt2]; cnt2++; } if(prev[brr[i]]!=-1){ ran.push_back({prev[brr[i]],i}); if(cur<prev[brr[i]]){ good++; cur=i; } } else{ prev[brr[i]]=i; } } if(!ok2) continue; sort(ran.begin(),ran.end()); int bad=0; cur=-1; for(auto i:ran) if(i.first>cur) bad++,cur=i.second; if(good>bad) ans++; } while(next_permutation(perm.begin(),perm.end())); } while(next_permutation(arr.begin(),arr.end())); cout << ans%p; }
#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...