Submission #1136193

#TimeUsernameProblemLanguageResultExecution timeMemory
1136193BuiDucManh123Sum Zero (RMI20_sumzero)C++17
61 / 100
294 ms40192 KiB
#include <bits/stdc++.h>
#define fi first
#define se second
#define ll long long
#define ull unsigned long long
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pb push_back
#define taskname ""
using namespace std;
const int lg=20;
int n,i,j,q,ans,l,r,f[lg+9][400009],a;
unordered_map<ll,int>check;
ll sum=0;
int main() {
	if (fopen(taskname".inp","r")) {
		freopen(taskname".inp","r",stdin);
		freopen(taskname".out","w",stdout);
	}
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
    cin>>n;
    for(i=0;i<lg;i++)
        for(j=0;j<=n;j++)
            f[i][j]=-1;
    for(i=1;i<=n;i++){
        cin>>a;
        sum+=a;
        if(check[sum]==0&&sum!=0) check[sum]=-1;
        f[0][i]=max(check[sum],f[0][i-1]);
        check[sum]=i;
    }
    check.clear();
    for(i=1;i<lg;i++)
    for(j=1;j<=n;j++){
        if(f[i-1][j]!=-1){
            f[i][j]=f[i-1][f[i-1][j]];
        }else{
            f[i][j]=-1;
        }
    }
    cin>>q;
    while(q--){
        cin>>l>>r;
        ans=0;
        for(i=lg-1;i>=0;i--){
            if(f[i][r]>=l-1){
                ans+=(1<<i);
                r=f[i][r];
            }
        }cout<<ans<<"\n";
    }
	return 0;
}

Compilation message (stderr)

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