Submission #950367

#TimeUsernameProblemLanguageResultExecution timeMemory
950367berrFibonacci representations (CEOI18_fib)C++17
20 / 100
4035 ms2948 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); //73 sayı var int n; cin >> n; vector<int> a(n); int cnt=1; for(auto &i: a) cin >> i; set<int> st; int gh; auto add =[&](int x){ gh=-1; while(st.find(x)!=st.end()){ if(st.find(x+1)!=st.end()){ st.erase(st.find(x+1)); x+=2; } else{ st.insert(x+1); st.erase(st.find(x)); x=max(0LL, x-2); } } if(x!=0) gh=x, st.insert(x); }; for(int i=0; i<n; i++){ int ans=1; add(a[i]); auto it=st.end(); it--; while(it!=st.begin()){ int val=*it; if(*prev(it)+1==*it){ st.erase(prev(it)); it=st.erase(it); add(val+1); if(gh!=-1){ it=st.find(gh); if(st.find(gh+1)!=st.end()) it=st.find(gh+1); } } 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:57:13: warning: unused variable 'ans' [-Wunused-variable]
   57 |         int ans=1;
      |             ^~~
fib.cpp:33:9: warning: unused variable 'cnt' [-Wunused-variable]
   33 |     int cnt=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...