Submission #1152245

#TimeUsernameProblemLanguageResultExecution timeMemory
1152245leo_puSum Zero (RMI20_sumzero)C++20
0 / 100
3 ms1344 KiB
#include <bits/stdc++.h> using namespace std; #define OSN ios_base::sync_with_stdio(false); cin.tie(NULL); #define fi first #define se second #define ll long long #define pb push_back #define pii pair<int,int> #define pll pair<long,long> const int INF=1e9; const int N=2e5+5; const int MOD=1e9+7; const int LOG=20; int ar[N], en[N], val[N]; set<int> st; set<pii> lis; // angka, idx vector<pii> v; int P[N][LOG]; int res[N][LOG]; int main() { OSN int n; cin >> n; for (int i=1 ; i<=n ; i++){ cin >> ar[i]; } st.insert(0); lis.insert({0,0}); int cnt=0; for (int i=1,j=1 ; i<=n && j<=n ; j++){ // res++; // cout << i << ' ' << j << "\n"; cnt+=ar[j]; // cout << ar[j] << " INILHO\n"; // cout << cnt << " inilah\n"; // for (auto x : st) cout << x << ' '; // cout << '\n'; // cout << st.count(cnt) << "\n"; if (st.count(cnt)==1){ for (auto x : lis){ if (x.fi==cnt){ // cout << "CEKKKKKK\n"; // for (auto y : lis) cout << y.fi << ' ' << y.se << "\n"; // cout << " ADA\n"; en[x.se+1]=j; v.pb({i,x.se}); break; } } i=j+1; cnt=0; st.clear(); st.insert(0); lis.clear(); lis.insert({0,j}); } else { st.insert(cnt); lis.insert({cnt, j}); } // cout << "\n"; } // for (auto x : v) cout << x.fi <<' ' << x.se << '\n'; // cout << "\n"; int temp=n; for (int i=n ; i>0 ; i--){ if (en[i]==0){ val[i]=0; en[i]=temp; } else { val[i]=1; temp=i-1; } } // for (int i=1 ; i<=n ; i++){ // cout << i << ' ' << en[i] << "\n"; // } for (int i=0 ; i<LOG ; i++){ P[n][i]=n; P[n+1][i]=n; } for (int i=n ; i>0 ; i--){ P[i][0]=en[i]; res[i][0]=val[i]; for (int j=1 ; j<LOG ; j++){ int x=P[i][j-1]; P[i][j]=P[x+1][j-1]; res[i][j]=res[i][j-1]+res[x+1][j-1]; } } int q; cin >> q; while (q--){ int a, b; cin >> a >> b; int ans=0; for (int i=LOG-1 ; i>=0 ; i--){ if (P[a][i]<b){ ans+=res[a][i]; a=P[a][i]+1; } } if (en[a]<=b){ ans+=val[a]; } cout << ans << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...