Submission #1273027

#TimeUsernameProblemLanguageResultExecution timeMemory
1273027abyfuSum Zero (RMI20_sumzero)C++20
0 / 100
351 ms668 KiB
//OwO
#pragma GCC optimize("O3", "unroll-loops")
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define namein "input.txt"
#define nameout "output.txt"
#define all(x) x.begin(),x.end()
#define fi first
#define se second
#define pb push_back
#define m_pi acos(-1)
using namespace std;
const ll inf = 7e18;    
const int linf = 1e8;

void file(){
    if (fopen(namein, "r")){
        freopen(namein, "r", stdin);
        freopen(nameout, "w", stdout);
    }   
}

const ll mod = 998244353;
const int N = 4e5 + 5, M = 5e5 + 5;
int n, a[N];//, p[N];
int dp[N];

void run(){
    cin >> n;
    for (int i = 1; i <= n; i++){
        cin >> a[i];
        
        //p[i] = p[i - 1] + a[i];
    }
    int q; cin >> q;
    while (q--){
        int l, r; cin >> l >> r;
        if (n <= 5000){
            unordered_map<ll, int> sx;
            unordered_map<ll, int> pos;
            dp[l - 1] = 0;
            sx[0] = 0;
            pos[0] = l - 1;
            ll sum = 0;
            //dp[l - 1] = 0;
            for (int i = l; i <= r; i++){
                sum += a[i];
                dp[i] = 0;
                if (sx[sum] != 0 || sum == 0){
                    dp[i] = sx[sum] + 1;
                }
                dp[i] = max(dp[i - 1], dp[i]);
                if (sx[sum] <= dp[i]){
                    pos[sum] = i;
                    sx[sum] = dp[i];
                }
                //cout << sum << " " << dp[i] << " " << sx[sum] << " " << pos[sum] << "\n";
            }
            //cout << "\n";
            cout << dp[r] << "\n";
        }
    }
}   

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); 
    cout.tie(0);
    file();
    run();
}

Compilation message (stderr)

sumzero.cpp: In function 'void file()':
sumzero.cpp:19:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |         freopen(namein, "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~
sumzero.cpp:20:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |         freopen(nameout, "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...