Submission #1319771

#TimeUsernameProblemLanguageResultExecution timeMemory
1319771sonarchtSum Zero (RMI20_sumzero)C++20
0 / 100
6 ms1336 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned long long #define ld long double #define pb push_back #define all(v) begin(v), end(v) #define pll pair<ll, ll> #define fi first #define se second #define vll vector<ll> #define mll map<ll, ll> mt19937_64 rng(chrono::high_resolution_clock().now().time_since_epoch().count()); const ll N = 4e5 + 6, inf = 1e18 + 7, mod = 1e9 + 7; ll n, m, k, q, ans, a[N], pf[N], li[N][21]; mll mp; void solve() { cin >> n; for (int i = 1; i <= n; ++i) cin >> a[i]; for (int i = 1; i <= n; ++i) pf[i] = pf[i-1] + a[i], mp[pf[i]] = inf; //for (int i = 0; i <= n; ++i) cout << pf[i] << " "; cout << endl; li[n+1][0] = n+1; for (int i = n; i >= 0; --i) { li[i][0] = min(mp[pf[i]], li[i+1][0]); mp[pf[i]] = i; } //for (int i = 0; i <= n; ++i) cout << li[i][0] << " "; cout << endl; for (int j = 1; (1 << j) <= n; ++j) { for (int i = 0; i <= n; ++i) { li[i][j] = li[li[i][j-1]][j-1]; } } cin >> q; while (q--) { ll l, r; cin >> l >> r; ll u = l-1, ans = 0; for (int j = 20; j >= 0; --j) { if (li[u][j] && li[u][j] <= r) { ans += (1 << j); u = li[u][j]; } } cout << ans << endl; } return; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); if (fopen(".INP", "r")) { freopen(".INP", "r", stdin); freopen(".OUT", "w", stdout); } ll tc = 1; // cin >> tc; while (tc--) { solve(); } return 0; }

Compilation message (stderr)

sumzero.cpp: In function 'int main()':
sumzero.cpp:55:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   55 |                 freopen(".INP", "r", stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~
sumzero.cpp:56:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   56 |                 freopen(".OUT", "w", stdout);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...