제출 #1193923

#제출 시각아이디문제언어결과실행 시간메모리
1193923Muhammad_AneeqSkyscraper (JOI16_skyscraper)C++20
100 / 100
105 ms151548 KiB
#include <iostream> #include <algorithm> using namespace std; #define int long long int const N=110,L=1005,mod=1e9+7; int dp[N][N][4][L]={}; inline void solve() { int n,lo; cin>>n>>lo; int a[n+1]; for (int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1); dp[1][1][0][0]=1; dp[1][1][1][0]=2; if (n==1) dp[1][1][2][0]=1; for (int i=1;i<n;i++) { for (int j=1;j<=i;j++) { for (int k=0;k<3;k++) { int cost=(a[i+1]-a[i])*(2*j-k); for (int l=cost;l<=lo;l++) { dp[i+1][j+1][k][l]+=(dp[i][j][k][l-cost]*(j+1-k)); dp[i+1][j][k][l]+=(dp[i][j][k][l-cost]*(2*j-k)); dp[i+1][j-1][k][l]+=(dp[i][j][k][l-cost]*(j-1)); dp[i+1][j+1][k+1][l]+=(dp[i][j][k][l-cost]*(2-k)); dp[i+1][j][k+1][l]+=(dp[i][j][k][l-cost]*(2-k)); dp[i+1][j+1][k][l]%=mod; dp[i+1][j][k][l]%=mod; dp[i+1][j-1][k][l]%=mod; dp[i+1][j+1][k+1][l]%=mod; dp[i+1][j][k+1][l]%=mod; } } } } int ans=0; for (int i=0;i<=L;i++) { ans+=(dp[n][1][2][i]); ans%=mod; } cout<<ans<<endl; } signed main() { ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); int t=1; for (int i=1;i<=t;i++) { solve(); } }

컴파일 시 표준 에러 (stderr) 메시지

skyscraper.cpp: In function 'void solve()':
skyscraper.cpp:45:28: warning: iteration 1005 invokes undefined behavior [-Waggressive-loop-optimizations]
   45 |         ans+=(dp[n][1][2][i]);
      |              ~~~~~~~~~~~~~~^~
skyscraper.cpp:43:19: note: within this loop
   43 |     for (int i=0;i<=L;i++)
      |                  ~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...