QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#621475 | #8783. Cherry Picking | ucup-team2526 | WA | 1ms | 5704kb | C++20 | 2.6kb | 2024-10-08 14:45:40 | 2024-10-08 14:46:41 |
Judging History
answer
#include<bits/stdc++.h>
#define int long long
using namespace std;
#define dbg(x...) \
do { \
cout << #x << " -> "; \
err(x); \
} while (0)
void err() {
cout<<endl<<endl;
}
template<class T, class... Ts>
void err(T arg, Ts ... args) {
cout<<fixed<<setprecision(10)<<arg<< ' ';
err(args...);
}
const int maxn = 1e5 + 5;
struct BIT {
#define lowbit(x) (x&(-x))
int tr[maxn << 2];
void add(int u,int v) {
while (u <= maxn) {
tr[u] += v;
u += lowbit(u);
}
}
int get(int u) {
int res = 0;
while (u) {
res += tr[u];
u -= lowbit(u);
}
return res;
}
}bit;
void solve(){
int n,k;cin >> n >> k;
vector<int> a(n + 5);
for (int i = 1;i <= n;i++) cin >> a[i];
string res;cin >> res;
int l = -1,r = -1;
int cnt = 1,ans = 0;
for (int i = 1;i <= n;i++) {
if (res[i - 1] == '1') {
bit.add(a[i],1);
l = i,r = i;
if (k == 1) ans = max(ans,a[i]);
break;
}
}
//dbg(l,r);
if (l == -1) {
cout << 0 << '\n';
return ;
}
multiset<int>s0,s1;
s1.insert(a[l]);
while (1) {
int ok = 0;
for (int i = r + 1;i <= n;i++) {
if (res[i - 1] == '0') {
s0.insert(a[i]);
}
else {
cnt++;
bit.add(a[i],1);
s1.insert(a[i]);
if (cnt >= k) {
int mi0;
if (s0.empty()) mi0 = 0;
else mi0 = *(s0.rbegin());
int num = bit.get(mi0);
if (cnt - num >= k) {
ok = 1;
auto it = s1.lower_bound(mi0 + 1);
int val = *(it);
ans = max(ans,val);
r = i;
break;
}
}
}
}
if (!ok) break;
bit.add(a[l],-1);
cnt--;
s1.erase(s1.find(a[l]));
for (int i = l + 1;i <= n;i++) {
if (res[i - 1] == '0') s0.erase(s0.find(a[i]));
else {
l = i;
ok = 0;
break;
}
}
if (ok) break;
}
cout << ans;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
int T = 1;
//cin >> T;
while(T--) solve();
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 3676kb
input:
5 2 1 2 3 4 5 01101
output:
2
result:
ok answer is '2'
Test #2:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
5 2 3 4 5 2 1 10101
output:
0
result:
ok answer is '0'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3676kb
input:
1 1 1 1
output:
1
result:
ok answer is '1'
Test #4:
score: 0
Accepted
time: 0ms
memory: 3612kb
input:
1 1 1 0
output:
0
result:
ok answer is '0'
Test #5:
score: 0
Accepted
time: 1ms
memory: 5704kb
input:
5 3 8 3 5 2 7 10101
output:
5
result:
ok answer is '5'
Test #6:
score: 0
Accepted
time: 1ms
memory: 5704kb
input:
10 3 1 10 2 3 9 3 1 6 9 3 1100110001
output:
0
result:
ok answer is '0'
Test #7:
score: 0
Accepted
time: 1ms
memory: 5640kb
input:
10 1 6 7 2 10 8 4 4 9 7 9 0111011000
output:
10
result:
ok answer is '10'
Test #8:
score: -100
Wrong Answer
time: 0ms
memory: 3832kb
input:
10 2 4 5 9 6 9 10 6 9 2 7 1100010100
output:
4
result:
wrong answer expected '9', found '4'