제출 #976907

#제출 시각아이디문제언어결과실행 시간메모리
976907AIF_is_carvingStreet Lamps (APIO19_street_lamps)C++17
40 / 100
137 ms19168 KiB
#include <bits/stdc++.h>
 
typedef long long ll;
using namespace std;

void solve(){

    int n, q; cin>>n>>q;
    if(n<=100 && q<=100){
        string str[q+1];
        cin>>str[0];

        for(int i=1; i<=q; i++){
            string mark;
            cin>>mark;
            if(mark == "toggle"){
                int ind; cin>>ind;
                string s = str[i-1];
                if(s[ind-1] == '0') s[ind-1] = '1';
                else s[ind-1]='0';

                str[i] = s;


            }
            else{
                int l, r; cin>>l>>r;
                int ans = 0;
                for(int j=0; j<=i-1; j++){
                    int flag =1;
                    for(int k = l-1; k<r-1; k++){
                        if(str[j][k] == '0') flag = 0;
                    }
                    ans+=flag;
                }

                

                cout<<ans<<"\n";

                str[i] =str[i-1];
            }
        }
    }
    else{
        string str;
    cin>>str;

    vector<int> v[n];
    for(int i=0; i<n; i++){
        if(str[i] =='1') v[i].push_back(0);
    }

    for(int i=1; i<=q; i++){
        string mark;
        cin>>mark;
        if(mark == "toggle"){
            int indx;
            cin>>indx;

            if(str[indx-1] == '1') str[indx-1]='0';

            v[indx-1].push_back(i);
            
        }
        else{
            int l, r; cin>>l>>r;

            l-=1;

            if(v[l].size()%2 == 0){
                int ans =0;
                for(int j=0; j<v[l].size(); j+=2){
                    ans+=v[l][j+1]-v[l][j];
                }

                cout<<ans<<"\n";
                if(ans>0){
                    v[l].clear();
                    v[l].push_back(i-ans);
                    v[l].push_back(i);
                }
            }
            else{
                int ans =0;
                for(int j=0; j<v[l].size()-1; j+=2){
                    ans+=v[l][j+1]-v[l][j];
                }
                //cout<<i<<" "<<v[l][v[l].size()-1];
                ans += i-v[l][v[l].size()-1];
                cout<<ans<<"\n";
                if(ans>0){
                    v[l].clear();
                    v[l].push_back(i-ans);
                }
            }
        }
    }
    }
    

    return;

}

int main(){   
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int t=1; //cin>>t;

    while(t--){
        solve();
    }

    return 0;

}
 

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

street_lamps.cpp: In function 'void solve()':
street_lamps.cpp:73:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   73 |                 for(int j=0; j<v[l].size(); j+=2){
      |                              ~^~~~~~~~~~~~
street_lamps.cpp:86:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   86 |                 for(int j=0; j<v[l].size()-1; j+=2){
      |                              ~^~~~~~~~~~~~~~
#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...