Submission #1307262

#TimeUsernameProblemLanguageResultExecution timeMemory
1307262HoriaHaivasCalvinball championship (CEOI15_teams)C++20
70 / 100
52 ms16724 KiB
#include<bits/stdc++.h> #define debug(x) cerr << #x << " " << x << "\n" #define debugs(x) cerr << #x << " " << x << " " #pragma GCC optimize("Ofast") #define int long long using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int range_rng(int l, int r) { return uniform_int_distribution<int>(l,r)(rng); } const int mod=1e6+7; int dp[1005][1005][2]; int n; vector<int> v; void modit(int &x) { if (x>=mod) x-=mod; } int smaller(vector<int> &v)///il fac strict (cred) { int i,j,ans; dp[0][0][1]=1; for (i=1;i<=n;i++) { for (j=1;j<=n;j++) { dp[i][j][0]+=(dp[i-1][j][0]*j)%mod; modit(dp[i][j][0]); dp[i][j][0]+=(dp[i-1][j-1][0]); modit(dp[i][j][0]); dp[i][j][0]+=(dp[i-1][j][1]*(v[i]-1))%mod; modit(dp[i][j][0]); if (v[i]<=j) dp[i][j][1]+=(dp[i-1][j][1]); if (v[i]==j) dp[i][j][1]+=(dp[i-1][j-1][1]); modit(dp[i][j][1]); } } ans=0; for(j=1;j<=n;j++) { ans+=dp[n][j][0]; modit(ans); } return ans; } signed main() { /* ifstream fin("arbore.in"); ofstream fout("arbore.out"); */ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int i,x; cin >> n; v.push_back(0); for (i=1;i<=n;i++) { cin >> x; v.push_back(x); } cout << (smaller(v)+1)%mod; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...