Submission #1008463

#TimeUsernameProblemLanguageResultExecution timeMemory
1008463ASN49KSkyscraper (JOI16_skyscraper)C++14
15 / 100
1 ms604 KiB
#include <bits/stdc++.h> #define pb push_back #define all(x) x.begin(),x.end() using namespace std; using i64 =long long; #define int long long const int mod=1e9+7; const int inf=1e9; const int N=100; const int L=1'000; int dp[2][N+2][L+1][3]; //nr de vecini liberi void add_self(int& x,int y) { x+=y; x%=mod; } int add(int x,int y) { return (x+y)%mod; } int prod(int x,int y) { return (1LL*x*y)%mod; } main() { ios::sync_with_stdio(false); cin.tie(0); int n,l; cin>>n>>l; vector<int>a(n); for(auto &c:a) { cin>>c; } sort(all(a)); a.pb(1e6); dp[1][0][0][0]=1; for(int i=0;i<n;i++) { for(int j=1;j<=i+1;j++) { for(int cost=0;cost<=l;cost++) { for(int m=0;m<=2;m++) { int& rez=dp[i&1][j][cost][m]; rez=0; int old_cost=cost-(2*j-m)*(a[i+1]-a[i]); if(old_cost<0) { continue; } //unim 2 comp add_self(rez , prod((j+1-m)*j, dp[(i&1)^1][j+1][old_cost][m])); if(i==n-1) { add_self(rez , dp[(i&1)^1][j+1][old_cost][m]); } //adaugam la un capat unei comp //e capat if(m>0) { //aici de gandit coef if(m==1)add_self(rez , prod(2*j , dp[(i&1)^1][j][old_cost][m-1])); else if(i==n-1)add_self(rez , dp[(i&1)^1][j][old_cost][m-1]); else if(j>1)add_self(rez , prod(j-1 , dp[(i&1)^1][j][old_cost][m-1])); } add_self(rez , prod(2*j-m , dp[(i&1)^1][j][old_cost][m])); //adaugam o noua componenta add_self(rez , dp[(i&1)^1][j-1][old_cost][m]); if(m>0) { add_self(rez , (3-m)*dp[(i&1)^1][j-1][old_cost][m-1]); } } } } dp[1][0][0][0]=0; } int rez=0; for(int i=0;i<=l;i++) { add_self(rez , dp[(n&1)^1][1][i][2]); } cout<<rez; }

Compilation message (stderr)

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