Submission #1219514

#TimeUsernameProblemLanguageResultExecution timeMemory
1219514khomeRack (eJOI19_rack)C++20
40 / 100
179 ms167936 KiB
#include<bits/stdc++.h> using namespace std; #define int long long const int INF = 1e18; const int NEU = 0; void solve(){ int n, k; cin >> n >> k; vector<pair<int, int>> v; if (k == 1) {cout << 1 << endl; return; } if (k == 2) {cout << (1 + (1 << (n-1))); return;} int id = 2; int m = 1 << (n-1); v.push_back({1, m}); v.push_back({m+1, 1 << n}); while (v.size() < k){ int sz = v.size(); for (int i = sz - id; i < sz; i++){ auto [l, r] = v[i]; v.push_back({l, (l+r)/2}); } for (int i = sz - id; i < sz; i++){ auto [l, r] = v[i]; v.push_back({(l+r)/2+1, r}); } id <<=1; } // for (auto [l, r] : v){ // cout << l << ' ' << r << endl; // } cout << (v[k-3].first + v[k-3].second + 1) / 2 << endl; } signed main(){ ios::sync_with_stdio(0); cin.tie(0); int t = 1; // cin >> t; while(t--)solve(); } /* int rec(int l, int r, vector<vector<int>> &v){ int ans = 0; for (int j = 0; j < 32; j++){ int cur = v[r][31-j] - v[l-1][31-j]; cur %= 2; ans += cur * (1<<j); } return ans; } void add(vector<vector<int>> &v, int id, int x){ for (int i = 0; i <= 31; i++){ v[id][31-i] = min(1ll, x & (1<<i)) + v[id-1][31-i]; } return; } void solve(){ int n, q; cin >> n >> q; vector<vector<int>> toq((n+1)/2+1, vector<int>(32)); vector<vector<int>> juft(n/2+1, vector<int>(32)); for (int i = 0 ; i < n; i++) { int x; cin >> x; if (i%2==0) add(toq, i/2+1, x); if (i%2==1) add(juft, i/2+1, x); } for (int i = 0; i < q; i++) { int p, l, r; cin >> p >> l >> r; if (p == 1) { if (l%2 == 1) { add(toq, (l-1)/2+1, r); // for (int j : toq[(l-1)/2]) cout << j;cout << endl; } else add(juft, (l-1)/2+1, r); } else { if ((r-l+1) % 2 == 0) cout << 0 << endl; else{ if (l%2 == 1) { cout << rec((l-1)/2+1, (r-1)/2+1, toq); } if (l%2 == 0) { cout << rec((l-1)/2+1, (r-1)/2+1, juft); } } cout << endl; } } // cout << (5^5) << endl; // for (auto i : toq){ // for (int j : i) cout << j;cout << endl; // }cout << endl; // for (auto i : juft){ // for (int j : i) cout << j; cout << endl; // }cout << endl; } */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...