Submission #67352169
Source Code Expand
#include <iostream>
#include <vector>
#include <set>
#include <unordered_set>
#include <deque>
#include <algorithm>
using namespace std;
using loong = long long;
using pp = pair<int,int>;
int demx = 1'000'000'000;
struct segTreeMin{
public:
void placeholder();
int nxt, u, v, sm;
int logup(int n){
int res = 1;
while (res < n){
res *= 2;
}
return res;
}
segTreeMin(){
}
segTreeMin(int sze, vector<int> &base){
rsz = sze;
sz = logup(sze);
dsz = 2*sz;
data = vector<pp>(dsz, {demx, 0});
lbound = vector<int>(dsz, 0);
rbound = vector<int>(dsz, 0);
for (int i = 0; i < sz; i++){
lbound[sz+i] = i;
rbound[sz+i] = i;
}
for (int i = 0; i < rsz; i++){
data[i+sz] = {base[i], i};
}
for (int i = sz-1; i > 0; i--){
lbound[i] = lbound[2*i];
rbound[i] = rbound[2*i+1];
data[i] = min(data[i*2],data[i*2+1]);
}
}
pp getMin(int l, int r, int curr){
if (l > rbound[curr] || lbound[curr] > r){
return {demx, 0};
}
if (l <= lbound[curr] && rbound[curr] <= r){
return data[curr];
}
pp lsm = {demx, 0};
lsm = min(lsm, getMin(l, r, curr * 2));
lsm = min(lsm, getMin(l, r, curr * 2 + 1));
return lsm;
}
void updateMin(int l, int r, int val, int curr){
if (l > rbound[curr] || lbound[curr] > r){
return;
}
if (l <= lbound[curr] && rbound[curr] <= r){
data[curr].first+=val;
return;
}
updateMin(l, r, val, curr * 2);
updateMin(l, r, val, curr * 2 + 1);
data[curr] = min(data[curr*2],data[curr*2+1]);
return;
}
void updateMin(int l, int r, int val){
updateMin(l, r, val, 1);
}
pp getMin(int l, int r){
return getMin(l, r, 1);
}
int rsz;
int sz;
int dsz;
vector<pp> data;
vector<int> lbound;
vector<int> rbound;
};
void buildMin(vector<int> &data, vector<int> &res, int strt, int sze, segTreeMin &tree){
//cout << sze << endl;
if (sze == 1){
res.push_back(data[strt]);
return;
}
pp ixMin = tree.getMin(strt, strt+sze-1);
if (ixMin.second >= strt+sze/2){
buildMin(data, res, strt+sze/2, sze/2, tree);
buildMin(data, res, strt, sze/2, tree);
} else {
buildMin(data, res, strt, sze/2, tree);
buildMin(data, res, strt+sze/2, sze/2, tree);
}
}
int main() {
int n, m, a, b, t, p, q;
cin >> n;
for (int i = 0; i < n; i++){
cin >> t;
t = (1<<(t));
vector<int> dd(t);
for (int j = 0; j < t; j++){
cin >> dd[j];
}
vector<int> res;
segTreeMin tree(dd.size(), dd);
buildMin(dd, res, 0, dd.size(), tree);
for (int j = 0; j < res.size(); j++){
cout << res[j] << " ";
}
cout << endl;
}
}
Submission Info
Submission Time
2025-07-05 22:32:16+0900
Task
E - Reverse 2^i
User
HronoS
Language
C++ 20 (gcc 12.2)
Score
450
Code Size
3226 Byte
Status
AC
Exec Time
183 ms
Memory
13800 KiB
Compile Error
Main.cpp: In function ‘int main()’:
Main.cpp:137:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
137 | for (int j = 0; j < res.size(); j++){
| ~~^~~~~~~~~~~~
Main.cpp:122:12: warning: unused variable ‘m’ [-Wunused-variable]
122 | int n, m, a, b, t, p, q;
| ^
Main.cpp:122:15: warning: unused variable ‘a’ [-Wunused-variable]
122 | int n, m, a, b, t, p, q;
| ^
Main.cpp:122:18: warning: unused variable ‘b’ [-Wunused-variable]
122 | int n, m, a, b, t, p, q;
| ^
Main.cpp:122:24: warning: unused variable ‘p’ [-Wunused-variable]
122 | int n, m, a, b, t, p, q;
| ^
Main.cpp:122:27: warning: unused variable ‘q’ [-Wunused-variable]
122 | int n, m, a, b, t, p, q;
| ^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
450 / 450
Status
Set Name
Test Cases
Sample
00_sample_00.txt
All
00_sample_00.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt
Case Name
Status
Exec Time
Memory
00_sample_00.txt
AC
1 ms
3460 KiB
01_test_00.txt
AC
1 ms
3452 KiB
01_test_01.txt
AC
1 ms
3448 KiB
01_test_02.txt
AC
96 ms
3476 KiB
01_test_03.txt
AC
8 ms
3472 KiB
01_test_04.txt
AC
71 ms
3464 KiB
01_test_05.txt
AC
72 ms
3464 KiB
01_test_06.txt
AC
80 ms
3492 KiB
01_test_07.txt
AC
76 ms
3524 KiB
01_test_08.txt
AC
96 ms
4664 KiB
01_test_09.txt
AC
101 ms
4528 KiB
01_test_10.txt
AC
95 ms
4628 KiB
01_test_11.txt
AC
115 ms
13800 KiB
01_test_12.txt
AC
109 ms
8932 KiB
01_test_13.txt
AC
102 ms
6044 KiB
01_test_14.txt
AC
183 ms
4652 KiB
01_test_15.txt
AC
100 ms
13256 KiB
01_test_16.txt
AC
99 ms
13324 KiB
01_test_17.txt
AC
100 ms
13400 KiB
01_test_18.txt
AC
102 ms
13336 KiB
01_test_19.txt
AC
103 ms
13368 KiB
01_test_20.txt
AC
103 ms
13360 KiB
01_test_21.txt
AC
102 ms
13424 KiB
01_test_22.txt
AC
102 ms
13384 KiB
01_test_23.txt
AC
102 ms
13536 KiB
01_test_24.txt
AC
102 ms
13396 KiB