Submission #942700

#TimeUsernameProblemLanguageResultExecution timeMemory
942700vjudge1Sum Zero (RMI20_sumzero)C++17
100 / 100
462 ms8276 KiB
#include <bits/stdc++.h> using namespace std; const int BSIZE = 73; vector<int> p0, p1, p2; void input(){ int n; cin >> n; vector<pair<long long, int>> pf(n+1); for (int i=1; i<=n; i++){ int v; cin >> v; pf[i] = {pf[i-1].first + v, i}; } sort(pf.begin(), pf.end()); p0.assign(n+1, INT_MIN); for (int lptr=0, rptr=0; lptr<pf.size(); lptr=rptr) for (rptr++; rptr < pf.size() && pf[lptr].first == pf[rptr].first; rptr++) p0[pf[rptr].second] = pf[rptr-1].second; for (int i=1; i<p0.size(); i++) p0[i] = max(p0[i], p0[i-1]); } void build(const vector<int> &ps, vector<int> &pl){ pl.assign(ps.size(), INT_MIN); for (int i=0; i<pl.size(); i++){ pl[i] = i; for (int j=0; j<BSIZE && pl[i] != INT_MIN; j++) pl[i] = ps[pl[i]]; } } int jmp(const vector<int> &p, int l, int &r){ int v = 0; for (; p[r] + 1 >= l; r = p[r]) v++; return v; } signed main(){ cin.tie(0)->sync_with_stdio(0); input(); build(p0, p1); build(p1, p2); int q; cin >> q; while (q--){ int l, r; cin >> l >> r; int v = 0; v += jmp(p2, l, r) * BSIZE * BSIZE; v += jmp(p1, l, r) * BSIZE; v += jmp(p0, l, r); cout << v << "\n"; } }

Compilation message (stderr)

sumzero.cpp: In function 'void input()':
sumzero.cpp:18:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |     for (int lptr=0, rptr=0; lptr<pf.size(); lptr=rptr)
      |                              ~~~~^~~~~~~~~~
sumzero.cpp:19:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |         for (rptr++; rptr < pf.size() && pf[lptr].first == pf[rptr].first; rptr++)
      |                      ~~~~~^~~~~~~~~~~
sumzero.cpp:22:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |     for (int i=1; i<p0.size(); i++)
      |                   ~^~~~~~~~~~
sumzero.cpp: In function 'void build(const std::vector<int>&, std::vector<int>&)':
sumzero.cpp:28:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |     for (int i=0; i<pl.size(); i++){
      |                   ~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...