| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1297012 | dosts | Brperm (RMI20_brperm) | C++20 | 0 ms | 0 KiB |
#include "brperm.h"
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
#define int long long
#define pii pair<int,int>
#define vi vector<int>
#define ff first
#define ss second
#define sp << " " <<
#define all(x) x.begin(),x.end()
#define big(x) ((int)(x.size()))
using namespace std;
const int MOD = 1e9+7, LIM = 1e6+1, inf = 2e9;
int revbits(int x,int k) {
int ans = 0;
for (int j = 0;j<k;j++) {
if (x&(1LL<<(k-j-1))) ans+=(1LL<<j);
}
return ans;
}
string t;
void init(signed n, const char s[]) {
t.resize(n);
for (int j = 0;j<n;j++) t[j] = s[j];
}
signed query(signed p, signed k) {
if (p+(1LL<<k)-1 >= big(t)) {
cout << -1 << '\n';
return;
}
string tt = t;
for (int j = 0;j<(1LL<<k);j++) {
int togo = revbits(j,k);
//cerr << j sp togo sp k << endl;
tt[p+togo] = t[p+j];
}
//cerr << tt sp t << endl;
return tt == t;
}
