답안 #316416

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
316416 2020-10-26T10:09:46 Z vipghn2003 Skyscraper (JOI16_skyscraper) C++14
컴파일 오류
0 ms 0 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)%mod)%=mod;
   ///new L
   if(!haveL) (res+=calc(i+1,cnt+1,1,haveR,val))%=mod;
   ///new R
   if(!haveR) (res+=calc(i+1,cnt+1,haveL,1,val))%=mod;
   if(cnt)
   {
       ///merge
       if(cnt>=2) (res+=calc(i+1,cnt-1,haveL,haveR,val)*(cnt-1)%mod)%=mod;
       ///push front
       (res+=calc(i+1,cnt,haveL,haveR,val)*(cnt-haveL)%mod)%=mod;
       ///push back
       (res+=calc(i+1,cnt,haveL,haveR,val)*(cnt-haveR)%mod)%=mod;
       ///made L
       if(!haveL) (res+=calc(i+1,cnt,1,haveR,val)%=mod;
       ///made R
       if(!haveR) (res+=calc(i+1,cnt,haveL,1,val))%=mod;
   }
   //cout<<i<<' '<<cnt<<' '<<haveL<<' '<<haveR<<' '<<val<<'\n' ;
   return res;
}

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: In function 'long long int calc(long long int, long long int, bool, bool, long long int)':
skyscraper.cpp:38:52: error: lvalue required as left operand of assignment
   38 |        if(!haveL) (res+=calc(i+1,cnt,1,haveR,val)%=mod;
      |                                                    ^~~
skyscraper.cpp:38:55: error: expected ')' before ';' token
   38 |        if(!haveL) (res+=calc(i+1,cnt,1,haveR,val)%=mod;
      |                   ~                                   ^
      |                                                       )
skyscraper.cpp: At global scope:
skyscraper.cpp:46:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   46 | main()
      |      ^