Submission #979871

# Submission time Handle Problem Language Result Execution time Memory
979871 2024-05-11T14:21:28 Z hugo_pm Fish 3 (JOI24_fish3) C++17
20 / 100
159 ms 31520 KB
#include <bits/stdc++.h>
#define int long long
using namespace std;

#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define rep(i, a, b) for(int i = (a); i < (b); i++)
#define sz(v) ((int)((v).size()))

template<typename T>
void chmax(T &x, const T &v) { if (x < v) x = v; }
template<typename T>
void chmin(T &x, const T &v) { if (x > v) x = v; }

using pii = pair<int, int>;
using vi = vector<int>;
using ll = long long;

string to_string(string s) { return s; }
template <typename T> string to_string(T v) {
    bool first = true;
    string res = "[";
    for (const auto &x : v) {
        if (!first)
            res += ", ";
        first = false;
        res += to_string(x);
    }
    res += "]";
    return res;
}

template <typename A, typename B>
string to_string(pair<A, B> p) {
  return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";
}

void dbg_out() { cout << endl; }
template <typename Head, typename... Tail> void dbg_out(Head H, Tail... T) {
    cout << ' ' << to_string(H);
    dbg_out(T...);
}

#ifdef DEBUG
#define dbg(...) cout << "(" << #__VA_ARGS__ << "):", dbg_out(__VA_ARGS__)
#else
#define dbg(...)
#endif

struct Req { int lft, iReq; };
struct Itv {
    int l, r, val;
    int sumVal(int lim_l = -1e18) {
        return (r - max(lim_l, l) + 1) * val;
    }
};
bool operator<(Itv a, Itv b) { return a.l < b.l; };
signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int nbFish, delta;
    cin >> nbFish >> delta;
    vector<int> ideal(nbFish);
    vector<int> sumQt {0}, sumDecal {0};
    rep(i, 0, nbFish) {
        cin >> ideal[i];
        sumQt.push_back(sumQt.back() + ideal[i]/delta);
        int decal = i && (ideal[i-1] % delta > ideal[i] % delta);
        sumDecal.push_back(sumDecal.back() + decal);
    }
    vector<int> quadDecal {0};
    for (int sigma : sumDecal) {
        quadDecal.push_back(quadDecal.back() + sigma);
    }
    int nbReq; cin >> nbReq;
    vector<vector<Req>> reqs(nbFish);
    rep(iReq, 0, nbReq) {
        int lft, rgt;
        cin >> lft >> rgt;
        --lft, --rgt;
        
        int targetQt = ideal[rgt] / delta;
        int answer = sumQt[rgt+1] - sumQt[lft] - (rgt-lft+1)*targetQt;
        answer += (rgt - lft + 1) * sumDecal[rgt+1] - quadDecal[rgt+2] + quadDecal[lft+1];
        
        int decalLftRgt = sumDecal[rgt+1] - sumDecal[lft+1];
        if (decalLftRgt > targetQt) {
            answer = -1;
        }
        cout << answer << '\n';
    }
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Incorrect 0 ms 348 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 110 ms 24672 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 60 ms 7880 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 90 ms 20320 KB Output is correct
2 Correct 99 ms 26836 KB Output is correct
3 Correct 70 ms 10052 KB Output is correct
4 Correct 157 ms 27620 KB Output is correct
5 Correct 139 ms 29480 KB Output is correct
6 Correct 146 ms 30524 KB Output is correct
7 Correct 118 ms 25216 KB Output is correct
8 Correct 122 ms 30700 KB Output is correct
9 Correct 102 ms 24312 KB Output is correct
10 Correct 91 ms 24436 KB Output is correct
11 Correct 120 ms 28040 KB Output is correct
12 Correct 108 ms 28192 KB Output is correct
13 Correct 159 ms 31520 KB Output is correct
14 Correct 108 ms 28088 KB Output is correct
15 Correct 126 ms 30080 KB Output is correct
16 Correct 107 ms 29304 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Incorrect 0 ms 348 KB Output isn't correct
4 Halted 0 ms 0 KB -