답안 #316415

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
316415 2020-10-26T10:05:54 Z vipghn2003 Skyscraper (JOI16_skyscraper) C++14
20 / 100
513 ms 362872 KB
#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N=105;
const int mod=1e9+7;

int n,L,a[N],b[N];
int dp[N][N][2][2][N*10];

int calc(int i,int cnt,bool haveL,bool haveR,int val)
{
   if(i) val+=a[i-1]*(2*cnt-haveL-haveR);
   if(val>L) return 0;
   int &res=dp[i][cnt][haveL][haveR][val];
   if(res!=-1) return res;
   if(i==n)
   {
      if(val>L||cnt!=1||!haveL||!haveR) return 0;
      return 1;
   }
   res=0;
   ///new comp
   res+=calc(i+1,cnt+1,haveL,haveR,val)*(cnt+1-haveL-haveR);
   ///new L
   if(!haveL) res+=calc(i+1,cnt+1,1,haveR,val);
   ///new R
   if(!haveR) res+=calc(i+1,cnt+1,haveL,1,val);
   if(cnt)
   {
       ///merge
       if(cnt>=2) res+=calc(i+1,cnt-1,haveL,haveR,val)*(cnt-1);
       ///push front
       res+=calc(i+1,cnt,haveL,haveR,val)*(cnt-haveL);
       ///push back
       res+=calc(i+1,cnt,haveL,haveR,val)*(cnt-haveR);
       ///made L
       if(!haveL) res+=calc(i+1,cnt,1,haveR,val);
       ///made R
       if(!haveR) res+=calc(i+1,cnt,haveL,1,val);
   }
   //cout<<i<<' '<<cnt<<' '<<haveL<<' '<<haveR<<' '<<val<<'\n' ;
   return res%mod;
}

main()
{
   ios_base::sync_with_stdio(false);
   cin.tie(nullptr);
   memset(dp,-1,sizeof dp);
   cin>>n>>L;
   if(n==1) return cout<<1,0;
   for(int i=0;i<n;i++) cin>>b[i];
   sort(b,b+n);
   for(int i=0;i<n;i++) a[i]=b[i+1]-b[i];
   cout<<calc(0,0,0,0,0);
}

Compilation message

skyscraper.cpp:46:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   46 | main()
      |      ^
# 결과 실행 시간 메모리 Grader output
1 Correct 196 ms 362872 KB Output is correct
2 Correct 198 ms 362872 KB Output is correct
3 Correct 196 ms 362744 KB Output is correct
4 Correct 206 ms 362872 KB Output is correct
5 Correct 199 ms 362748 KB Output is correct
6 Correct 197 ms 362744 KB Output is correct
7 Correct 199 ms 362872 KB Output is correct
8 Correct 199 ms 362744 KB Output is correct
9 Correct 197 ms 362744 KB Output is correct
10 Correct 197 ms 362872 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 197 ms 362744 KB Output is correct
2 Correct 197 ms 362844 KB Output is correct
3 Correct 200 ms 362872 KB Output is correct
4 Correct 199 ms 362744 KB Output is correct
5 Correct 199 ms 362772 KB Output is correct
6 Correct 198 ms 362744 KB Output is correct
7 Correct 202 ms 362872 KB Output is correct
8 Correct 202 ms 362744 KB Output is correct
9 Correct 199 ms 362872 KB Output is correct
10 Correct 201 ms 362872 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 196 ms 362872 KB Output is correct
2 Correct 198 ms 362872 KB Output is correct
3 Correct 196 ms 362744 KB Output is correct
4 Correct 206 ms 362872 KB Output is correct
5 Correct 199 ms 362748 KB Output is correct
6 Correct 197 ms 362744 KB Output is correct
7 Correct 199 ms 362872 KB Output is correct
8 Correct 199 ms 362744 KB Output is correct
9 Correct 197 ms 362744 KB Output is correct
10 Correct 197 ms 362872 KB Output is correct
11 Correct 197 ms 362744 KB Output is correct
12 Correct 197 ms 362844 KB Output is correct
13 Correct 200 ms 362872 KB Output is correct
14 Correct 199 ms 362744 KB Output is correct
15 Correct 199 ms 362772 KB Output is correct
16 Correct 198 ms 362744 KB Output is correct
17 Correct 202 ms 362872 KB Output is correct
18 Correct 202 ms 362744 KB Output is correct
19 Correct 199 ms 362872 KB Output is correct
20 Correct 201 ms 362872 KB Output is correct
21 Correct 200 ms 362752 KB Output is correct
22 Incorrect 513 ms 362872 KB Output isn't correct
23 Halted 0 ms 0 KB -