답안 #403185

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
403185 2021-05-12T22:17:46 Z AmineTrabelsi 가로등 (APIO19_street_lamps) C++14
40 / 100
1881 ms 524292 KB
#include <bits/stdc++.h>
using namespace std;
// Hi
int n,q;
string s;
vector<pair<int,pair<int,int>>> que; // 0 toggle 1 query
void sub_one(){
    vector<vector<int>> cnt(n+5,vector<int>(n+5,0));
    vector<int> pref(n+5,0);
    for(int i=0;i<n;i++){
        pref[i+1] = pref[i]+(s[i]=='1');
    }
    for(int i=0;i<=n;i++){
        for(int j=0;j<i;j++){
            cnt[i][j] = cnt[j][i] = (pref[i]-pref[j] == i-j);
        }
    }
    for(int tt=0;tt<q;tt++){
        if(que[tt].first == 0){
            int ind = que[tt].second.first;
            if(s[ind] == '0')s[ind] = '1';
            else s[ind] = '0';
            for(int i=0;i<n;i++){
                pref[i+1] = pref[i]+(s[i]=='1');
            }
        }else{
            int a = que[tt].second.first,b = que[tt].second.second;
            cout << cnt[a][b] << '\n';
        }
        for(int i=0;i<=n;i++){
            for(int j=0;j<i;j++){
                cnt[i][j] = cnt[j][i] += (pref[i]-pref[j] == i-j);
            }
        }
    }
}
void sub_two(){
    vector<int> cnt,last_on(n+1,0);
    for(auto i:s)cnt.push_back(i-'0');
    vector<bool> on(cnt.begin(),cnt.end());
    for(int i=0;i<n;i++){
        if(on[i]){
            last_on[i] = -1;
        }else last_on[i] = 1e9+7;
    }
    for(int time=0;time<q;time++){
        if(que[time].first == 0){
            int ind = que[time].second.first;
            if(!on[ind]){
                on[ind] = 1;
                last_on[ind] = time;
                cnt[ind]++;
            }else{
                int pre = time-last_on[ind]-1;
                cnt[ind] += (pre >= 0 ? pre : 0);
                last_on[ind] = 1e9+7;
                on[ind] = 0;
            }
        }else{
            int a = que[time].second.first;
            int pre = time-last_on[a]-1;
            cout << cnt[a]+(pre >= 0 ? pre : 0) << '\n';
        }
    }
}
void sub_four(){
    // later
}
void sub_three(){
    // later
}
int main(){
    //ios::sync_with_stdio(0);cin.tie(0);
    cin>>n>>q>>s;
    vector<bool> on;
    for(auto i:s)on.push_back((i=='1' ? 1 : 0));
    bool two = 1,three = 0,four = 0; /// turn these back on
    bool ex = 0;
    for(int i=0;i<q;i++){
        string t;
        cin>>t;
        if(t == "toggle"){
            if(ex)four = 0;
            int ind;
            cin>>ind;
            if(on[ind]){
                three = 0;
                on[ind] = 0;
            }else on[ind] = 1;
            que.push_back({0,{ind-1,0}});
        }else{
            ex = 1;
            int a,b;
            cin>>a>>b;
            if(b-a != 1)two = 0;
            que.push_back({1,{a-1,b-1}});
        }
    }
    if(two){
        sub_two();
    }else if(four){
        sub_four();
    }else if(three){
        sub_three();
    }else sub_one();
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 2 ms 332 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 3 ms 332 KB Output is correct
7 Correct 3 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 211 ms 6528 KB Output is correct
2 Correct 228 ms 6464 KB Output is correct
3 Correct 250 ms 6560 KB Output is correct
4 Correct 297 ms 9260 KB Output is correct
5 Correct 311 ms 9572 KB Output is correct
6 Correct 281 ms 9468 KB Output is correct
7 Correct 342 ms 9104 KB Output is correct
8 Correct 357 ms 10756 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1844 ms 4280 KB Output is correct
2 Correct 1779 ms 4300 KB Output is correct
3 Correct 1781 ms 4300 KB Output is correct
4 Correct 1785 ms 4300 KB Output is correct
5 Runtime error 506 ms 524292 KB Execution killed with signal 9
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1769 ms 4312 KB Output is correct
2 Correct 1783 ms 4276 KB Output is correct
3 Correct 1791 ms 4288 KB Output is correct
4 Correct 1881 ms 4296 KB Output is correct
5 Runtime error 555 ms 524292 KB Execution killed with signal 9
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 2 ms 332 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 3 ms 332 KB Output is correct
7 Correct 3 ms 332 KB Output is correct
8 Correct 211 ms 6528 KB Output is correct
9 Correct 228 ms 6464 KB Output is correct
10 Correct 250 ms 6560 KB Output is correct
11 Correct 297 ms 9260 KB Output is correct
12 Correct 311 ms 9572 KB Output is correct
13 Correct 281 ms 9468 KB Output is correct
14 Correct 342 ms 9104 KB Output is correct
15 Correct 357 ms 10756 KB Output is correct
16 Correct 1844 ms 4280 KB Output is correct
17 Correct 1779 ms 4300 KB Output is correct
18 Correct 1781 ms 4300 KB Output is correct
19 Correct 1785 ms 4300 KB Output is correct
20 Runtime error 506 ms 524292 KB Execution killed with signal 9
21 Halted 0 ms 0 KB -