Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- int main(){
- ios::sync_with_stdio(0);
- int n;
- cin >> n;
- vector<int> depth(n, 0);
- vector<vector<int>> jump(n, vector<int>(19, 0));
- vector<int> kol(n, 0);
- jump[0][0] = 0; int a, b;
- for (int i = 0; i < n; i++) {
- char ch, dop;
- ch = 'A';
- a = i + 1; b = i + 2;
- a--; b--;
- if (i == n - 1) {
- a = 0; b = i; ch = 'G';
- }
- if (i % 100000 == 0) {
- cout << i << endl;
- }
- if (ch == 'A') {
- depth[b] = depth[a] + 1;
- jump[b][0] = a;
- for (int k = 1; k <= 18; k++) {
- int e = 1;
- }
- }
- else {
- if (depth[a] < depth[b]) {
- swap(a, b);
- }
- for (int k = 18; k >= 0; k--) {
- if (depth[jump[a][k]] >= depth[b]) {
- a = jump[a][k];
- }
- }
- if (a != b) {
- for (int k = 18; k >= 0; k--) {
- if (jump[a][k] != jump[b][k]) {
- a = jump[a][k];
- b = jump[b][k];
- }
- }
- a = jump[a][0];
- }
- cout << a + 1 << endl;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement