Submission #982622

#TimeUsernameProblemLanguageResultExecution timeMemory
982622dimashhhSkyscraper (JOI16_skyscraper)C++17
15 / 100
2 ms4704 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e2 + 5, MOD = 1e9 + 7; int n,l,a[N]; int dp[N][N][2][2][N*10]; void add(int &x,int y){ x += y; if(x >= MOD) x -= MOD; } void test(){ cin >> n >> l; for(int i = 1;i <= n;i++) { cin >> a[i]; } sort(a + 1,a + n + 1); if(n == 1) { cout << 1; return; } dp[2][1][0][0][(a[2]-a[1])*2] = 1; dp[2][1][0][1][a[2]-a[1]] = dp[2][1][1][0][a[2]-a[1]] = 1; a[n+1] = 10000; for(int i = 2;i <= n;i++){ for(int j = 1;j <= i;j++){ for(int s = 0;s < 2;s++){ for(int t = 0;t < 2;t++){ for(int k = 0;k <= l;k++){ int d = dp[i][j][s][t][k]; ll val = (a[i+1]-a[i]); {//new add(dp[i+1][j+1][s][t][k+val*((j+1)*2-s-t)],d*1ll*(j+1-s-t)%MOD); if(!s){ add(dp[i+1][j+1][1][t][k+val*((j+1)*2-1-t)],d); } if(!t){ add(dp[i+1][j+1][s][1][k+val*((j+1)*2-1-s)],d); } } {//merge add(dp[i+1][j-1][s][t][k+val*((j-1)*2-s-t)],d*1ll*(j-1)%MOD); } {//corner add(dp[i+1][j][s][t][k+val*(2*j-s-t)],d*1ll*(j*2-s-t)%MOD); if(!s){ add(dp[i+1][j][1][t][k+val*(2*j-1-t)],d); } if(!t){ add(dp[i+1][j][s][1][k+val*(2*j-1-s)],d); } } } } } } } int ans = 0; for(int i = 1;i <= l;i++){ add(ans,dp[n + 1][1][1][1][i]); } cout << ans; } int main(){ ios_base::sync_with_stdio(false);cin.tie(0); int T = 1; // cin >> T; while (T--){ test(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...