Submission #964400

#TimeUsernameProblemLanguageResultExecution timeMemory
964400modwweSkyscraper (JOI16_skyscraper)C++17
100 / 100
49 ms35284 KiB
#pragma GCC optimize("Ofast,unroll-loops") #pragma GCC target("avx,avx2,sse,sse2") #include<bits/stdc++.h> #define int long long //#define ll long long #define down cout<<'\n'; #define NHP ios_base::sync_with_stdio(0);cout.tie(0);cin.tie(0); #define modwwe int t;cin>>t; while(t--) #define bit(i,j) (i>>j&1) #define sobit(a) __builtin_popcountll(a) #define task "test" #define fin(x) freopen(x".inp","r",stdin) #define fou(x) freopen(x".out","w",stdout) #define pb push_back #define checktime cerr << (double)clock() / CLOCKS_PER_SEC * 1000 << " ms"; using namespace std; void ngha(); const int mod2=1e9+7; const int mod1=998244353; struct ib { int a; int b; }; struct icd { int a,b; }; struct ic { int a,b,c; }; struct id { int a,b,c,d; }; struct ie { int a,b,c, d,e; }; int n,m,s2,s4,s3,sf,k,r,mid,s5,s6,mx,s7,s8,s9,mx2,res,dem2=0,dem=0,l; int i,s10,s12; int el=29; main() { //#ifndef ONLINE_JUDGE // fin(task),fou(task); //#endif NHP //modwwe // cin>>res; ngha(),down checktime } int dp[101][101][1001][4]; int a[101]; void ngha() { cin>>n>>k; for(int i=1; i<=n; i++) cin>>a[i]; dp[1][0][0][1]=1; dp[1][0][0][0]=1; dp[1][0][0][2]=1; if(n==1) dp[1][0][0][3]=1; /// 1 khoa van trai ///2 khoa van phai ///0 khong khoa ///4 khoa 2 van sort(a+1,a+1+n); for(int i=1; i<n; i++) { s2=a[i+1]-a[i]; for(int j=0; j<n; j++) { for(int z=0; z<=k; z++) { // if(i==1) cout<<j<<" "<<z,down for(int t=0; t<=3; t++){ // if(i==1) // cout<<j<<" "<<z<<" "<<t<<" "<<dp[i][j][z][t],down if(dp[i][j][z][t]==0) continue; if(t==0)/// khong khoa van { s3=s2*(2+2*j)+z; if(s3<=k){ dp[i+1][j][s3][0]=(dp[i+1][j][s3][0]+dp[i][j][z][0]*(j+1)*2)%mod2; dp[i+1][j-1][s3][0]=(dp[i+1][j-1][s3][0]+dp[i][j][z][0]*j)%mod2; dp[i+1][j+1][s3][0]=(dp[i+1][j+1][s3][0]+dp[i][j][z][0]*(j+2))%mod2; /// chuyen ve 0 cac buoc khac tuong tu thoi :))) dp[i+1][j][s3][1]=(dp[i+1][j][s3][1]+dp[i][j][z][0])%mod2; dp[i+1][j+1][s3][1]=(dp[i+1][j+1][s3][1]+dp[i][j][z][0])%mod2; dp[i+1][j][s3][2]=(dp[i+1][j][s3][2]+dp[i][j][z][0])%mod2; dp[i+1][j+1][s3][2]=(dp[i+1][j+1][s3][2]+dp[i][j][z][0])%mod2;} } if(t==1) { s3=s2*(1+2*j)+z; if(s3<=k){ dp[i+1][j][s3][1]=(dp[i+1][j][s3][1]+dp[i][j][z][1]*(2*j+1))%mod2; dp[i+1][j-1][s3][1]=(dp[i+1][j-1][s3][1]+dp[i][j][z][1]*j)%mod2; dp[i+1][j+1][s3][1]=(dp[i+1][j+1][s3][1]+dp[i][j][z][1]*(j+1))%mod2; /// giu nguyen dp[i+1][j][s3][3]=(dp[i+1][j][s3][3]+dp[i][j][z][1])%mod2; dp[i+1][j+1][s3][3]=(dp[i+1][j+1][s3][3]+dp[i][j][z][1])%mod2; } //if(i==1) cout<<dp[2][j+1][s3][3]<<" "<<s3<<" "<<dp[i][j][z][1],down } if(t==2) { s3=s2*(1+2*j)+z; if(s3<=k){ dp[i+1][j][s3][2]=(dp[i+1][j][s3][2]+dp[i][j][z][2]*(2*j+1))%mod2; dp[i+1][j-1][s3][2]=(dp[i+1][j-1][s3][2]+dp[i][j][z][2]*j)%mod2; dp[i+1][j+1][s3][2]=(dp[i+1][j+1][s3][2]+dp[i][j][z][2]*(j+1))%mod2; ///giu nguyen dp[i+1][j][s3][3]=(dp[i+1][j][s3][3]+dp[i][j][z][2])%mod2; dp[i+1][j+1][s3][3]=(dp[i+1][j+1][s3][3]+dp[i][j][z][2])%mod2; } } if(t==3) { s3=s2*2*j+z; if(s3<=k){ dp[i+1][j][s3][3]=(dp[i+1][j][s3][3]+dp[i][j][z][3]*(2*j))%mod2; dp[i+1][j-1][s3][3]=(dp[i+1][j-1][s3][3]+dp[i][j][z][3]*j)%mod2; dp[i+1][j+1][s3][3]=(dp[i+1][j+1][s3][3]+dp[i][j][z][3]*j)%mod2; } } } } } } s2=0; for(int i=0; i<=k; i++) { s2+=dp[n][0][i][3]; s2=s2%mod2; } cout<<s2; ///1 2 3 /**1 0 0 1 2 1 1 3 3 2 3 3 4 1 7 3 5 0 9 3 example: 1 5 3 4 2 =>(5-1)+(5-3)+(4-3)+(4-2)=9 */ }

Compilation message (stderr)

skyscraper.cpp:45:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   45 | main()
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...