Submission #950396

#TimeUsernameProblemLanguageResultExecution timeMemory
950396berrFibonacci representations (CEOI18_fib)C++17
50 / 100
4083 ms2892 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int mod =1e9+7; int mul(int x, int y){ return (x*y)%mod; } int sum(int x, int y){ return (x+y)%mod; } int poww(int x, int y){ if(y==0) return 1; int tmp =poww(x, y/2); tmp=mul(tmp, tmp); if(y%2) return mul(tmp, x); return tmp; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n; cin >> n; vector<int> a(n); for(auto &i: a) cin >> i; set<int> st; auto add =[&](int x, auto&& add)->void{ while(st.find(x)!=st.end()){ if(st.find(x+1)!=st.end()){ st.erase(st.find(x+1)); x+=2; } else if(x!=1){ st.insert(x+1); st.erase(st.find(x)); x=max(1LL, x-2); } else{ st.insert(2); st.erase(1); x=0; } } if(x!=0) st.insert(x); }; for(int i=0; i<n; i++){ int ans=1; add(a[i], add); // cout<<a[i]<<" "; auto it=st.end(); it--; while(it!=st.begin()){ int val=*it; if(*prev(it)+1==*it){ st.erase(prev(it)); st.erase(it); add(val+1, add); it=st.end(); it--; } else{ it--; } } /* for(auto i: st) cout<<i<<" "; cout<<"\n"; */ vector<array<int, 2>> dp(st.size()); dp[0]={1, (*st.begin()-1)/2}; int cnt=1; int last=*st.begin(); for(auto h: st){ if(h==*st.begin()) continue; dp[cnt][0]=sum(dp[cnt-1][0], dp[cnt-1][1]); dp[cnt][1]=sum(mul(dp[cnt-1][0], (h-last-1)/2), mul(dp[cnt-1][1], (h-last)/2)); cnt++; last=h; } cout<<sum(dp[dp.size()-1][0], dp[dp.size()-1][1])<<"\n"; } }

Compilation message (stderr)

fib.cpp: In function 'int main()':
fib.cpp:59:13: warning: unused variable 'ans' [-Wunused-variable]
   59 |         int ans=1;
      |             ^~~
#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...