QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#473324 | #186. Street Lamps | Dimash | 0 | 2ms | 10012kb | C++20 | 2.4kb | 2024-07-12 01:44:56 | 2024-07-12 01:44:56 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 3e5 + 20, MOD = (int)1e9+7;
int n,q;
vector<int> t[N];
vector<pair<int,int>> qr[N];
int mn[N * 4],mx[N * 4],mod[N*4];
void assign(int v,int val){
mx[v] = mn[v] = mod[v] = val;
}
void build(int v = 1,int tl = 1,int tr = q){
mx[v] = mn[v] = (int)1e9;
if(tl == tr) return;
int tm = (tl + tr) >> 1;
build(v+v,tl,tm);
build(v+v+1,tm+1,tr);
}
void push(int v){
if(mod[v]){
assign(v+v,mod[v]);
assign(v+v+1,mod[v]);
mod[v]=0;
}
}
void upd(int l,int r,int val,int v = 1,int tl = 1,int tr = q){
if(l > r || tl > r || l > tr) return;
if(tl >= l && tr <= r){
assign(v,val);
}else{
push(v);
int tm = (tl + tr) >> 1;
upd(l,r,val,v+v,tl,tm);
upd(l,r,val,v+v+1,tm+1,tr);
mx[v] = max(mx[v + v],mx[v + v + 1]);
mn[v] = min(mn[v + v],mn[v +v + 1]);
}
}
int get(int l,int r,int val,int v = 1,int tl = 1,int tr = n){
if(l > r || tl > r || l > tr || mn[v] > val) return 0;
if(tl >= l && tr <= r && mx[v] <= val){
return tr - tl + 1;
}
push(v);
int tm = (tl + tr) >> 1;
return get(l,r,val,v+v,tl,tm) + get(l,r,val,v+v+1,tm+1,tr);
}
ll res[N];
void test(){
cin >> n >> q;
for(int i = 1;i <= n;i++){
char x;
cin >> x;
if(x == '0'){
t[i].push_back(0);
}
}
for(int i = 1;i <= q;i++){
res[i] = -1;
string tp;
cin >> tp;
if(tp == "toggle"){
int a;
cin >> a;
t[a].push_back(i);
}else{
int l,r;
cin >> l >> r;
--r;
qr[l].push_back({r,i});
}
}
for(int i = n;i >= 1;i--){
vector<pair<int,int>> o;
t[i].push_back(q + 1);
for(int j = 0;j < (int)t[i].size() - 1;j += 2){
o.emplace_back(t[i][j],t[i][j + 1] - 1);
}
for(auto [l,r]:o){
upd(l,r,i);
}
for(auto [r,id]:qr[i]){
res[id] = id - get(1,id,r);
}
}
for(int i = 1;i <= q;i++){
if(res[i] != -1){
cout << res[i] << '\n';
}
}
}
int main() {
ios_base::sync_with_stdio(false);cin.tie(0);
int t = 1;
// cin >> t;
while(t--){
test();
}
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 20
Accepted
time: 2ms
memory: 7652kb
input:
5 7 11011 query 1 2 query 1 2 query 1 6 query 3 4 toggle 3 query 3 4 query 1 6
output:
1 2 0 0 1 2
result:
ok 6 lines
Test #2:
score: -20
Wrong Answer
time: 1ms
memory: 7732kb
input:
5 50 01001 query 1 6 toggle 3 toggle 3 toggle 2 toggle 3 toggle 2 toggle 4 query 2 6 query 2 3 query 1 3 query 3 5 toggle 3 query 2 6 query 1 5 query 2 3 query 3 6 toggle 5 toggle 1 toggle 2 toggle 4 query 1 6 query 4 5 toggle 3 query 5 6 toggle 2 query 4 6 toggle 5 toggle 5 toggle 2 query 4 5 query...
output:
0 3 8 6 6 8 9 14 11 16 18 19 21 26 26 27 31 38 38 40 41 42 43 44 46
result:
wrong answer 2nd lines differ - expected: '1', found: '3'
Subtask #2:
score: 0
Time Limit Exceeded
Test #9:
score: 0
Time Limit Exceeded
input:
100 300000 1100100000000101010010100111010001100010001100111101000010111110001101101110100100100110101010110010 query 13 14 query 42 43 toggle 64 query 78 79 toggle 85 query 35 36 toggle 35 query 4 5 toggle 5 query 4 5 query 42 43 query 35 36 query 13 14 query 14 15 toggle 15 toggle 31 query 20 21 q...
output:
result:
Subtask #3:
score: 0
Wrong Answer
Test #17:
score: 20
Accepted
time: 2ms
memory: 7744kb
input:
1000 1003 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
0 0 0
result:
ok 3 lines
Test #18:
score: -20
Wrong Answer
time: 2ms
memory: 7776kb
input:
1000 1003 00100001101000000001000001001000100010000010010010001001001010001010101100010001000010101100000001001111000001110000010110100000100110001000000101001110000001110001000100000011001110000011010100101000000010100110100010000000110000111100100000011000100010010100000000100000000010001001110101...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
wrong answer 249th lines differ - expected: '26', found: '30'
Subtask #4:
score: 0
Wrong Answer
Test #30:
score: 0
Wrong Answer
time: 2ms
memory: 10012kb
input:
1000 1003 10111011001010101101100010101100100010100110001000000001001100111110101100110100010001111101101100110111110100011000111101100100000110110010101011101001101110111100010100100000110001010001111101001010100101011111010000001110111110001011010111101100000001001110101110011111000101101100011010...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
wrong answer 989th lines differ - expected: '0', found: '1'
Subtask #5:
score: 0
Skipped
Dependency #1:
0%