Local Compiler Issue
Difference between en1 and en2, changed 165 character(s)
Hi there. So I was (and still am) trying to code a solution for [problem:1954D]. One of the main implementation here is the knapsack DP, but somehow there was an issue on the variables. So I went to retype **just** the knapsack code and debug it like the following:↵


~~~~~↵
#include <bits/stdc++.h>↵

using namespace std;↵

long long dp[5000];↵
int a[5000];↵

int main() {↵
    int n;↵
    cin >> n;↵
    for (int i=0;i<n;i++) {↵
        cin >> a[i];↵
        for (int j=5000-a[i];j>=0;j--) dp[j+a[i]]=(dp[j+a[i]]+dp[j])%998244353;↵
    }↵
    for (int i=0;i<n;i++) cout << a[i] << ' ';↵
    cout << endl;↵
}↵
~~~~~↵

So, I was testing this input for this code:↵


~~~~~↵
3↵
1 1 2↵
~~~~~↵

and in my local VS Code g++17 compiler it results in this:↵

~~~~~↵
301989885 0 2↵
~~~~~↵

while in Codeforces g++17, it results in this:↵


~~~~~↵
1 1 2↵
~~~~~↵

Does anyone know why this happened? If so, please let me know :>


Edit: So apparently, the local compiler produce the correct output if I change 5000 to 5001 or 4999. Now I'm more tempted to know on why 5000 specifically fails.

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en2 English KitasCraft 2024-04-14 15:45:07 165
en1 English KitasCraft 2024-04-14 15:38:20 953 Initial revision (published)