제출 #73550

#제출 시각아이디문제언어결과실행 시간메모리
73550haitunFibonacci representations (CEOI18_fib)C++14
0 / 100
4093 ms616 KiB
#include <bits/stdc++.h> #include <tuple> //#include "functions.h" #define FOR(x,y) for(int x = 0; x < y; x++) #define ALLR(x) x.begin(),x.end() #define con continue #define ll long long #define LINF LLONG_MAX #define INF INT_MAX #define pii pair<int,int> #define vi vector <int> #define pb push_back #define F first #define S second #define len(x) x.length() #define sz(x) x.size() #define SEE(v) for(auto x : t) cout << x << " "; cout << endl; using namespace std; void rec(ll n, vector <ll> f, ll &ans,vector <ll> vans, vector <vector<ll> > &vector_of_ans) { if(n == 0) { sort(ALLR(vans)); FOR(j, sz(vector_of_ans)) { if(vans == vector_of_ans[j]) return; } vector_of_ans.pb(vans); ans++; //FOR(j, sz(vans)) cout << vans[j] << " "; //cout << endl; return; } else if(n < 0) return; int pos = upper_bound(ALLR(f), n) - f.begin(); FOR(j, pos) { //cout << n << endl; ll temp = f[j]; f.erase(f.begin() + j); if(n - temp >= 0) { vans.pb(temp); rec(n - temp, f, ans, vans, vector_of_ans); vans.erase(vans.end() - 1); } f.insert(f.begin() + j, temp); } } int main() { /*srand(time(0)); double a[10], b[10]; int r = 500000; int cnt[3] = {0}; fstream os; os.open("test.txt"); FOR(j,10) os >> a[j]; FOR(j,10) os >> b[j]; os.close(); double tdmg = 0.0; FOR(jbciwb, r) { bool cr = false; double patk = a[0], matk = a[2]; if((rand() % 100) < a[6]) { patk *= 1.5; matk *= 1.3; cnt[0]++; cr = true; } double pdmg = max(patk - b[1], 0.0); double mdmg = max(matk - b[3], 0.0); double dmg = pdmg + mdmg; if((rand() % 100) < b[7]) { dmg = 0; if(cr) cnt[2]++; cnt[1]++; } tdmg += dmg; } cout << tdmg / double(r) - b[5]; cout << endl; cout << cnt[0] << " " << cnt[1] << " " << cnt[2];*/ //freopen("test.txt","r",stdin); int n, r; cin >> n; vector <ll> num(n), t, f = {1,2}; FOR(j, 106) f.pb(f[j] + f[j + 1]); FOR(j, n) cin >> num[j]; r = f[num[0] - 1]; FOR(j, n) { if(j != 0) { r += f[num[j] - 1]; } vector <ll> vans; vector <vector<ll> > vector_of_ans; /* FOR(j, 30) { //if(j <= 120) con; ll ans = 0; rec(j, f, ans, vans, vector_of_ans); //cout << ans << endl; cout << "To form " << j << ": " << ans << endl; if(ans == 0) { cout << endl << j << " !!!!!!\n\n"; break; } } */ ll ans = 0; rec(r, f, ans, vans, vector_of_ans); //cout << ans << endl; cout << ans << endl; } }

컴파일 시 표준 에러 (stderr) 메시지

fib.cpp: In function 'void rec(long long int, std::vector<long long int>, long long int&, std::vector<long long int>, std::vector<std::vector<long long int> >&)':
fib.cpp:4:35: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define FOR(x,y) for(int x = 0; x < y; x++)
                                   ^
fib.cpp:23:3: note: in expansion of macro 'FOR'
   FOR(j, sz(vector_of_ans))
   ^~~
#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...