제출 #746459

#제출 시각아이디문제언어결과실행 시간메모리
746459dooweyBrperm (RMI20_brperm)C++14
17 / 100
359 ms9616 KiB
#include <bits/stdc++.h> #include "brperm.h" using namespace std; typedef long long ll; typedef pair<int, int> pii; #define fi first #define se second #define mp make_pair const int MOD = (int)1e9 + 9; const int N = (int)5e5 + 10; vector<char> S; vector<int> A[2]; void init(int n, const char s[]) { for(int i = 0 ; i < n; i ++ ){ S.push_back(s[i]); A[S[i] - 'a'].push_back(i); } } int get_cnt(int id, int r){ int x = lower_bound(A[id].begin(), A[id].end(), r + 1) - A[id].begin(); return x; } int get(int id, int l, int r){ return get_cnt(id, r) - get_cnt(id, l - 1); } int query(int i, int k) { if(i + (1 << k) - 1 >= S.size()) return 0; int li = i; int ri = i + (1 << k) - 1; int ai = get(0, li, ri); int bi = get(1, li, ri); if(min(ai, bi) >= 40){ return 0; } int O = 0; if(ai <= bi){ O = 0; } else{ O = 1; } int id = lower_bound(A[O].begin(), A[O].end(), li) - A[O].begin(); int cur; int nw; while(id < A[O].size() && A[O][id] <= ri){ cur = A[O][id] - li; nw = 0; for(int b = 0; b < k; b ++ ){ if((cur & (1 << b))){ nw |= (1 << (k - b - 1)); } } //cout << cur << " - " << nw << " |\n"; if(S[li + cur] != S[li + nw]) return 0; id ++ ; } return 1; }

컴파일 시 표준 에러 (stderr) 메시지

brperm.cpp: In function 'int query(int, int)':
brperm.cpp:38:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |     if(i + (1 << k) - 1 >= S.size()) return 0;
      |        ~~~~~~~~~~~~~~~~~^~~~~~~~~~~
brperm.cpp:56:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |     while(id < A[O].size() && A[O][id] <= ri){
      |           ~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...