제출 #891555

#제출 시각아이디문제언어결과실행 시간메모리
891555LinhLewLewSum Zero (RMI20_sumzero)C++17
22 / 100
1022 ms8636 KiB
// PhuThuyRuntime <3 // A secret makes a woman woman #include <bits/stdc++.h> using namespace std; #define pb push_back #define fo(i, l, r) for(int i = l; i <= r; i++) #define foi(i, l, r) for(int i = l; i >= r; i--) #define elif else if #define el cout << "\n"; #define pii pair<int, int> #define pli pair<ll, int> #define pll pair<ll, ll> #define pil pair<int, ll> #define fi first #define se second #define in(x) freopen(x, "r", stdin) #define out(x) freopen(x, "w", stdout) #define ll long long #define ull unsigned long long #define pob pop_back #define bs binary_search #define vi vector<int> #define vii vector<pair<int, int>> #define getbit(i, j) (i >> j) & 1 #define offbit(i, j) (1 << j) ^ i #define onbit(i, j) (1 << j) | i const int N = 1e5 + 2; const ll mod = 1e9 + 7; const int inf = INT_MAX; const int base = 31; const long double EPS = 1e-9; const long double pi = acos(-1.0); int n, q, a[4 * N]; ll f[4 * N]; void inp(){ cin >> n; fo(i, 1, n){ cin >> a[i]; f[i] = f[i - 1] + a[i]; } cin >> q; } map<ll, int> pos; int pre[4 * N]; int dp[5005]; void sol(){ pos[0] = 0; memset(pre, -1, sizeof(pre)); fo(i, 1, n){ if(pos.count(f[i])) pre[i] = pos[f[i]]; pos[f[i]] = i; } while(q--){ int l, r; cin >> l >> r; memset(dp, 0, sizeof(dp)); fo(i, l, r){ dp[i] = dp[i - 1]; if(pre[i] >= l - 1) dp[i] = max(dp[i], dp[pre[i]] + 1); // cout << dp[i] << ' '; } cout << dp[r], el } } int main(){ // in("sum0.inp"); // out("sum0.out"); ios_base::sync_with_stdio(false); cin.tie(NULL); inp(); sol(); return 0; } /* 10 1 2 -3 0 1 -4 3 2 -1 1 3 1 10 1 5 2 9 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...