Submission #267132

#TimeUsernameProblemLanguageResultExecution timeMemory
267132kimbj0709Street Lamps (APIO19_street_lamps)C++14
20 / 100
419 ms29964 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define maxn 300050
vector<int> seg(maxn*8,INT_MAX);
void update(int node,int start,int end,int pos,int val){
    if(start==end){
        assert(start==pos);
        seg[node] = val;
        return;
    }
    int mid = (start+end)/2;
    if(pos<=mid){
        update(node*2+1,start,mid,pos,val);
    }
    else{
        update(node*2+2,mid+1,end,pos,val);
    }
    seg[node] = max(seg[node*2+1],seg[node*2+2]);
}
int query(int node,int start,int end,int rangemin,int rangemax){
    if(start>rangemax||end<rangemin){
        return -1;
    }
    if(start>=rangemin&&end<=rangemax){
        return seg[node];
    }
    int mid = (start+end)/2;
    return max(query(node*2+1,start,mid,rangemin,rangemax),query(node*2+2,mid+1,end,rangemin,rangemax));
}
int32_t main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    int n,q;
    cin >> n >> q;
    string input;
    cin >> input;
    vector<int> currpos(maxn,0);
    for(int i=0;i<input.length();i++){
        if(input.at(i)=='1'){
            currpos[i+1] = 1;
            update(0,1,n,i+1,0);
        }
    }
    string input1;
    int input2,input3;
    for(int i=1;i<=q;i++){
        cin >> input1;
        if(input1=="toggle"){
            cin >> input2;
            if(currpos[input2]==1){
                currpos[input2] = 0;
                update(0,1,n,input2,INT_MAX);
            }
            else{
                currpos[input2] = 1;
                update(0,1,n,input2,i);
            }
        }
        else{
            cin >> input2 >> input3;
            input3--;
            int mini = query(0,1,n,input2,input3);
            if(mini==INT_MAX){
                cout << 0 << "\n";
            }
            else{
                cout << i-mini << "\n";
            }
        }
    }
 
}

Compilation message (stderr)

street_lamps.cpp: In function 'int32_t main()':
street_lamps.cpp:39:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |     for(int i=0;i<input.length();i++){
      |                 ~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...