Robię zadanie z OI, wysyłam rozwiązanie, "Process due to signal 11", sprawdzam debuggerem i valgrind = 0 błędów (u mnie na komputerze wszystko działa jak należy), po pół godzinie kombinowania dowiaduje się że dla sprawdzarki w pętli for(int i = 5; i >= 0; i--)
i
w pewnym momencie może wynieśc -1 O_o, dlaczego ?
Kod do zadania, pokazujący dziwne zachowanie:
#include <bits/stdc++.h>
using namespace std;
class Bottle{
public:
int t;
int a;
int w;
void load(){
cin >> t >> a >> w;
}
};
const int INF = 1e9 + 7;
vector<vector<int>> dp (79 + 1, vector<int> (21 + 1, INF));
vector<Bottle> bottles (1000);
int calc_min_bottle_weight(Bottle & bottle, int need_t, int need_a, int n){
for (int i = need_a; i >= 0; i--){
for (int j = need_t; j >= 0; j--){
if (i > dp.size() - 1 || i < 0 || j > dp[0].size() - 1 || j < 0){
cout << i << "_" << j << "JAKIM_CUDEM_i=-1???";
return 0;
}
dp[i][j] = 2137;
}
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(NULL);
int need_t, need_a, n;
cin >> need_t >> need_a;
cin >> n;
for (int i = 0; i < n; i++)
bottles[i].load();
dp[0][0] = 0;
for (int b = 0; b < n; b++)
calc_min_bottle_weight(bottles[b], need_t, need_a, n);
cout << dp[need_a][need_t];
return 0;
}
Tutaj "Testuje": https://szkopul.edu.pl/problemset/problem/sJ1qx1ofWZlg2bZR40XJB_0O/site/?key=submit