Submission #92887

#TimeUsernameProblemLanguageResultExecution timeMemory
92887LittleFlowers__Skyscraper (JOI16_skyscraper)C++14
20 / 100
369 ms194680 KiB
#include <bits/stdc++.h> #define bit(x,i) (1&(x>>(i-1))) #define on(x,i) (x|(1<<(i-1))) using namespace std; const int M=1e9+7; int n,l,kq; int a[15]; int f[1<<15][15][210]; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cin>>n>>l; for(int i=1;i<=n;++i) cin>>a[i]; if(n<=8) { sort(a+1,a+n+1); do { int sum=0; for(int i=1;i<n;++i) sum+=abs(a[i]-a[i+1]); kq+=sum<=l; } while(next_permutation(a+1,a+n+1)); return cout<<kq,0; } f[0][0][0]=1; for(int tt=0;tt<(1<<n)-1;++tt) for(int i=0;i<=n;++i) for(int t=0;t<=l;++t) if(f[tt][i][t]) for(int j=1;j<=n;++j) if(!bit(tt,j)) { int tt2=on(tt,j); int c=(tt==0 ? 0 : t + abs(a[i]-a[j])); f[tt2][j][c]=(f[tt2][j][c] + f[tt][i][t])%M; } for(int i=1;i<=n;++i) for(int t=0;t<=l;++t) kq=(kq+f[(1<<n)-1][i][t])%M; cout<<kq; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...