Submission #1072746

#TimeUsernameProblemLanguageResultExecution timeMemory
1072746kunzaZa183Fibonacci representations (CEOI18_fib)C++17
5 / 100
4097 ms432 KiB
#include <bits/stdc++.h> using namespace std; void add(set<int> &si, int x) { queue<int> qi; qi.push(x); while(!qi.empty()) { int tmp = qi.front(); qi.pop(); if(si.count(tmp)) { si.erase(tmp); if(tmp==1) { qi.push(2); } else if(tmp==2) { qi.push(1); qi.push(3); } else { qi.push(tmp-2); qi.push(tmp + 1); } continue; } else if(si.count(tmp + 1)) { si.erase(tmp + 1); qi.push(tmp + 2); } else if(si.count(tmp - 1)) { si.erase(tmp - 1); qi.push(tmp + 1); } else { si.insert(tmp); } } } const int mod = 1e9+7; int state(set<int> vi, int cur) { if(vi.empty()) return 1; int x = *vi.rbegin(); if(cur==1) { if(vi.size() > 1) return 0; if(x==1) return 1; } int total = 0; vi.erase(x); if( x <=cur) { total += state(vi,x - 1); } if(x - 1<=cur && x>2) { add(vi, x - 2); total += state(vi,x - 2); } return total % mod; } int main() { int n; cin>>n; vector<int> vi(n); for(auto &a:vi) cin>>a; set<int> cur; for(auto a:vi) { add(cur,a); cout<<state(cur, 100)<<"\n"; } }
#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...