Академический Документы
Профессиональный Документы
Культура Документы
// main.cpp
// practice
//
// Created by Mahmud on 02/01/18.
// Copyright © 2017 Mahmud. All rights reserved.
//
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <numeric>
#include <functional>
#include <cassert>
struct SparseTable {
//int *data;
//int** table; // indices of maximum elements
int data[MAX];
int table[18][MAX];
SparseTable () {
}
SparseTable(int *_data, int N = 0) {
//data = _data;
for (int i = 1; i <= N; i ++) data[i] = _data[i];
int d = 31 - __builtin_clz(N);
//table = (int**)calloc(d + 1, sizeof(int));
//for (int i = 0; i <= d; i ++) table[i] = (int *)calloc(N + 1,
sizeof(int));
for (int i = 0; i <= d; i ++) {
for (int j = 1; j + (1 << i) - 1 <= N; j ++) {
if (i == 0) table[i][j] = j;
else {
if (data[table[i - 1][j]] > data[table[i - 1][j + (1 << (i -
1))]]) {
table[i][j] = table[i - 1][j];
} else {
table[i][j] = table[i - 1][j + (1 << (i - 1))];
}
}
}
}
}
int query(int low, int high) {
int delta = 31 - __builtin_clz(high - low + 1);
if (data[table[delta][low]] > data[table[delta][high - (1 << delta) + 1]])
{
return table[delta][low];
} else {
return table[delta][high - (1 << delta) + 1];
}
}
};
int N;
char ch;
int priorities[MAX];
string labels[MAX];
SparseTable st;
int pr = 0;
string data, lb = "";
int indices[MAX];
int tempPriorities[MAX];
string tempLabels[MAX];
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
return 0;
}