Submission #1148633

#TimeUsernameProblemLanguageResultExecution timeMemory
1148633yeysoFish 3 (JOI24_fish3)C++20
0 / 100
338 ms11620 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
    int n, d; cin >> n >> d;
    vector<int> c(n, 0);
    for(int i = 0; i < n; i ++){
        cin >> c[i];
    }
    int q; cin >> q;
    vector<int> prefix(n+1, 0);
    vector<int> bad(n+1, 0);
    vector<int> lastzero(n+1, 0);
    for(int i = 0; i < n; i ++){
        prefix[i+1] = prefix[i] + c[i];
        bad[i+1] = bad[i];
        if(i > 0 && c[i] == 0 && c[i-1] == 1){
            bad[i+1] += 1;
        }
        if(i > 0){
            if(c[i] == 0){
                lastzero[i] = i + 1;
            } else {
                lastzero[i] = lastzero[i-1];
            }
        }
    }
    /*for(int i = 0; i < n + 1; i ++){
        cout << lastzero[i] << " ";
    } cout << "\n";*/
    for(int i = 0; i < q; i ++){
        //vector<int> cc = c;
        int res = 0;
        int l, r; cin >> l >> r;
        l -= 1;
        r -= 1;
        if(d != 1){
            if(bad[r + 1] != bad[l + 1]){
                res = -1;
            } 
        } else {
            if(prefix[lastzero[r]] >= prefix[l + 1]){
                res = prefix[lastzero[r]] - prefix[l + 1];
            } else {
                res = 0;
            }
        }
        //cout << " - ";
        cout << res << "\n";
        /*for(int i = r - 1; i >= l; i --){
            if(cc[i] > cc[i+1]){
                res += ceil((double)(cc[i] - cc[i+1]) / d);
                cc[i] -= ceil((double)(cc[i] - cc[i+1]) / d) * d;
            }
        }
        for(int i = l; i <= r; i ++){
            if(cc[i] < 0) res = -1;
        }
        //cout << " - " << res << "\n";
        cout << res << "\n";*/
    }
}
/*
g++ -std=gnu++17 -O2 -pipe -o fish fish.cpp

7 1
0 0 1 0 1 1 0
7
1 2
1 3
1 4
1 5
1 6
1 7
6 6

*/
#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...