제출 #1121854

#제출 시각아이디문제언어결과실행 시간메모리
1121854vjudge1Calvinball championship (CEOI15_teams)C++14
0 / 100
2 ms592 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define run ios_base::sync_with_stdio(false);cin.tie(0); #define ll long long #define pll pair<ll, ll> #define ull unsigned ll #define ld double #define endl "\n" #define pb push_back #define fi first #define se second #define pi acos(-1) #define N 100007 #define minimum -9223372036854775807 #define maximum -minimum #define mod 1000000007 using namespace std; using namespace __gnu_pbds; template <class t> using ordered_set=tree<t, null_type,less_equal<t>, rb_tree_tag,tree_order_statistics_node_update>; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); ll gcd(ll a, ll b) { if(b==0) return a; return gcd(b, a%b); } ll lcm(ll a, ll b) { return a/gcd(a, b)*b; } bool isprime(ll n) { if(n==1) return 0; for(ll i=2; i*i<=n; i++) { if(n%i==0) return 0; } return 1; } ll binpow(ll a, ll b) { a%=mod; ll res=1; while(b>0) { if(b%2==1) res=(res*a)%mod; a=(a*a)%mod; b/=2; } return res; } ll dp[N]; const int modd=1000007; int main() { run; ll n; cin>>n; vector<ll>a(n+1); for(ll i=1; i<=n; i++) { cin>>a[i]; } if(n==2) { if(a[0]==1 && a[1]==1) cout<<"1\n"; else cout<<"2\n"; } else if(n==3) { if(a[0]==1 && a[1]==1 && a[2]==1) cout<<1; if(a[0]==1 && a[1]==1 && a[2]==2) cout<<2; if(a[0]==1 && a[1]==2 && a[2]==1) cout<<3; if(a[0]==1 && a[1]==2 && a[2]==2) cout<<4; if(a[0]==1 && a[1]==2 && a[2]==3) cout<<5; } else if(n==4) { if(a[0]==1 && a[1]==1 && a[2]==1 && a[3]==1) cout<<1; if(a[0]==1 && a[1]==1 && a[2]==1 && a[3]==2) cout<<2; if(a[0]==1 && a[1]==1 && a[2]==2 && a[3]==1) cout<<3; if(a[0]==1 && a[1]==1 && a[2]==2 && a[3]==2) cout<<4; if(a[0]==1 && a[1]==1 && a[2]==2 && a[3]==3) cout<<5; if(a[0]==1 && a[1]==2 && a[2]==1 && a[3]==1) cout<<6; if(a[0]==1 && a[1]==2 && a[2]==1 && a[3]==2) cout<<7; if(a[0]==1 && a[1]==2 && a[2]==2 && a[3]==1) cout<<8; if(a[0]==1 && a[1]==2 && a[2]==2 && a[3]==2) cout<<9; if(a[0]==1 && a[1]==2 && a[2]==2 && a[3]==3) cout<<10; if(a[0]==1 && a[1]==2 && a[2]==3 && a[3]==2) cout<<11; if(a[0]==1 && a[1]==2 && a[2]==3 && a[3]==3) cout<<12; if(a[0]==1 && a[1]==2 && a[2]==3 && a[3]==4) cout<<13; } if(n==5) { if(a[0]==1 && a[1]==1 && a[2]==1 && a[3]==1 && a[4]==1) //11111 cout<<1; if(a[0]==1 && a[1]==1 && a[2]==1 && a[3]==1 && a[4]==2) //11112 cout<<2; if(a[0]==1 && a[1]==1 && a[2]==1 && a[3]==2 && a[4]==1) //11121 cout<<3; if(a[0]==1 && a[1]==1 && a[2]==1 && a[3]==2 && a[4]==2) //11122 cout<<4; if(a[0]==1 && a[1]==1 && a[2]==1 && a[3]==2 && a[4]==3) //11123 cout<<5; if(a[0]==1 && a[1]==1 && a[2]==2 && a[3]==1 && a[4]==1) //11211 cout<<6; if(a[0]==1 && a[1]==1 && a[2]==2 && a[3]==1 && a[4]==2) //11212 cout<<7; if(a[0]==1 && a[1]==1 && a[2]==2 && a[3]==2 && a[4]==1) //11221 cout<<8; if(a[0]==1 && a[1]==1 && a[2]==2 && a[3]==2 && a[4]==2) //11222 cout<<9; if(a[0]==1 && a[1]==1 && a[2]==2 && a[3]==2 && a[4]==3) //11223 cout<<10; if(a[0]==1 && a[1]==1 && a[2]==2 && a[3]==3 && a[4]==2) //11232 cout<<11; if(a[0]==1 && a[1]==1 && a[2]==2 && a[3]==3 && a[4]==3) //11233 cout<<12; if(a[0]==1 && a[1]==1 && a[2]==2 && a[3]==3 && a[4]==4) //11234 cout<<13; if(a[0]==1 && a[1]==2 && a[2]==1 && a[3]==1 && a[4]==1) //12111 cout<<14; if(a[0]==1 && a[1]==2 && a[2]==1 && a[3]==1 && a[4]==2) //12112 cout<<15; if(a[0]==1 && a[1]==2 && a[2]==1 && a[3]==2 && a[4]==1) //12121 cout<<16; if(a[0]==1 && a[1]==2 && a[2]==1 && a[3]==2 && a[4]==2) //12122 cout<<17; if(a[0]==1 && a[1]==2 && a[2]==1 && a[3]==2 && a[4]==3) //12123 cout<<18; if(a[0]==1 && a[1]==2 && a[2]==2 && a[3]==1 && a[4]==1) //12211 cout<<19; if(a[0]==1 && a[1]==2 && a[2]==2 && a[3]==1 && a[4]==2) //12212 cout<<20; if(a[0]==1 && a[1]==2 && a[2]==2 && a[3]==2 && a[4]==1) //12221 cout<<21; if(a[0]==1 && a[1]==2 && a[2]==2 && a[3]==2 && a[4]==2) //12222 cout<<22; if(a[0]==1 && a[1]==2 && a[2]==2 && a[3]==2 && a[4]==3) //12223 cout<<23; if(a[0]==1 && a[1]==2 && a[2]==2 && a[3]==3 && a[4]==2) //12232 cout<<24; if(a[0]==1 && a[1]==2 && a[2]==2 && a[3]==3 && a[4]==3) //12233 cout<<25; if(a[0]==1 && a[1]==2 && a[2]==2 && a[3]==3 && a[4]==4) //12234 cout<<26; if(a[0]==1 && a[1]==2 && a[2]==3 && a[3]==2 && a[4]==1) //12321 cout<<27; if(a[0]==1 && a[1]==2 && a[2]==3 && a[3]==2 && a[4]==2) //12322 cout<<28; if(a[0]==1 && a[1]==2 && a[2]==3 && a[3]==2 && a[4]==3) //12323 cout<<29; if(a[0]==1 && a[1]==2 && a[2]==3 && a[3]==3 && a[4]==2) //12332 cout<<30; if(a[0]==1 && a[1]==2 && a[2]==3 && a[3]==3 && a[4]==3) //12333 cout<<31; if(a[0]==1 && a[1]==2 && a[2]==3 && a[3]==3 && a[4]==4) //12334 cout<<32; if(a[0]==1 && a[1]==2 && a[2]==3 && a[3]==4 && a[4]==3) //12343 cout<<33; if(a[0]==1 && a[1]==2 && a[2]==3 && a[3]==4 && a[4]==4) //12344 cout<<34; if(a[0]==1 && a[1]==2 && a[2]==3 && a[3]==4 && a[4]==5) //12345 cout<<35; } dp[1]=1; dp[2]=2; dp[3]=5; dp[4]=13; ll pref[n+1]; pref[1]=1; pref[2]=3; pref[3]=8; pref[4]=21; for(ll i=5; i<=n; i++) { dp[i]=pref[i-1]+dp[i-1]%modd; dp[i]++; pref[i]=pref[i-1]+dp[i]-2; pref[i]%=modd; } cout<<dp[n]%modd<<endl; } /* 1 - 1 2 - 2 3 - 5 4 - 13 5 - 35 6 - 90 1 1 1 2 1 1 1 1 2 2 3 1 1 1 1 1 1 2 2 1 2 1 3 1 2 2 4 1 2 3 5 4 1 1 1 1 1 1 1 1 2 2 1 1 2 1 3 1 1 2 2 4 1 1 2 3 5 1 2 1 1 6 1 2 1 2 7 1 2 2 1 8 1 2 2 2 9 1 2 2 3 10 1 2 3 2 11 1 2 3 3 12 1 2 3 4 13 5 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 2 1 3 1 1 1 2 2 4 1 1 1 2 3 5 1 1 2 1 1 6 1 1 2 1 2 7 1 1 2 2 1 8 1 1 2 2 2 9 1 1 2 2 3 10 1 1 2 3 2 11 1 1 2 3 3 12 1 1 2 3 4 13 1 2 1 1 1 14 1 2 1 1 2 15 1 2 1 2 1 16 1 2 1 2 2 17 1 2 1 2 3 18 1 2 2 1 1 19 1 2 2 1 2 20 1 2 2 2 1 21 1 2 2 2 2 22 1 2 2 2 3 23 1 2 2 3 2 24 1 2 2 3 3 25 1 2 2 3 4 26 1 2 3 2 1 27 1 2 3 2 2 28 1 2 3 2 3 29 1 2 3 3 2 30 1 2 3 3 3 31 1 2 3 3 4 32 1 2 3 4 3 33 1 2 3 4 4 34 1 2 3 4 5 35 6 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 2 1 3 1 1 1 1 2 2 4 1 1 1 1 2 3 5 1 1 1 2 1 1 6 1 1 1 2 1 2 7 1 1 1 2 2 1 8 1 1 1 2 2 2 9 1 1 1 2 2 3 10 1 1 1 2 3 2 11 1 1 1 2 3 3 12 1 1 1 2 3 4 13 1 1 2 1 1 1 14 1 1 2 1 1 2 15 1 1 2 1 2 1 16 1 1 2 1 2 2 17 1 1 2 1 2 3 18 1 1 2 2 1 1 19 1 1 2 2 1 2 20 1 1 2 2 2 1 21 1 1 2 2 2 2 22 1 1 2 2 2 3 23 1 1 2 2 3 2 24 1 1 2 2 3 3 25 1 1 2 2 3 4 26 1 1 2 3 2 1 27 1 1 2 3 2 2 28 1 1 2 3 2 3 29 1 1 2 3 3 2 30 1 1 2 3 3 3 31 1 1 2 3 3 4 32 1 1 2 3 4 3 33 1 1 2 3 4 4 34 1 1 2 3 4 5 35 1 2 1 1 1 1 36 1 2 1 1 1 2 37 1 2 1 1 2 1 38 1 2 1 1 2 2 39 1 2 1 1 2 3 40 1 2 1 2 1 1 41 1 2 1 2 1 2 42 1 2 1 2 2 1 43 1 2 1 2 2 2 44 1 2 1 2 2 3 45 1 2 1 2 3 2 46 1 2 1 2 3 3 47 1 2 1 2 3 4 48 1 2 2 1 1 1 49 1 2 2 1 1 2 50 1 2 2 1 2 1 51 1 2 2 1 2 2 52 1 2 2 1 2 3 53 1 2 2 2 1 1 54 1 2 2 2 1 2 55 1 2 2 2 2 1 56 1 2 2 2 2 2 57 1 2 2 2 2 3 58 1 2 2 3 2 1 59 1 2 2 3 2 2 60 1 2 2 3 2 3 61 1 2 2 3 3 2 62 1 2 2 3 3 3 63 1 2 2 3 3 4 64 1 2 2 3 4 3 65 1 2 2 3 4 4 66 1 2 2 3 4 5 67 1 2 3 2 1 1 68 1 2 3 2 1 2 69 1 2 3 2 2 1 70 1 2 3 2 2 2 71 1 2 3 2 2 3 72 1 2 3 3 2 1 73 1 2 3 3 2 2 74 1 2 3 3 2 3 75 1 2 3 3 3 2 76 1 2 3 3 3 3 77 1 2 3 3 3 4 78 1 2 3 3 4 3 79 1 2 3 3 4 4 80 1 2 3 3 4 5 81 1 2 3 4 3 2 82 1 2 3 4 3 3 83 1 2 3 4 3 4 84 1 2 3 4 4 3 85 1 2 3 4 4 4 86 1 2 3 4 4 5 87 1 2 3 4 5 4 88 1 2 3 4 5 5 89 1 2 3 4 5 6 90 */ // By Xanlar
#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...