USACO problem submitting (please help!)

Revision en1, by frank1369blogger, 2020-07-03 17:09:30

Hi. I've been solving this problem in USACO named snakes. when I want to submit this is what I write for input output stuff:

freopen("snakes.in", "r", stdin); freopen("snakes.out", "w", stdout);

ans this model has always worked and I don't know whats wrong with this problem. and this is what usaco gives me when submitted:

` Runtime error or memory limit exceeded on sample input case -- details below Your output file snakes.out: [File missing!]

The correct answer: 3`

and this is exact code for the problem(if you want to check):

#include <bits/stdc++.h> 

#define debug(x) cerr << #x << ": " << x << endl

using namespace std;

typedef long long ll;

const int N = 410, inf = (int) 2e9;

int dp[N][N][N];
int dp_min[N][N];
int a[N];

int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  freopen("snakes.in", "r", stdin);
  freopen("snakes.out", "w", stdout);
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      for (int k = 0; k <= m; k++) {
        dp[i][j][k] = -1;
        dp_min[i][k] = inf;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j <= m; j++) {
      if (a[i] < a[0]) {
        continue;
      }
      dp[0][i][j] = a[i] - a[0];
      dp_min[0][j] = min(dp_min[0][j], dp[0][i][j]);
    }
  }
  for (int i = 1; i < n; i++) {
    for (int j = 0; j < n; j++) {
      for (int k = 0; k <= m; k++) {
        if (a[j] < a[i]) {
          continue;
        }
        if (k == 0) {
          if (dp[i - 1][j][k] == -1) {
            dp[i][j][k] = -1;
          } else {
            dp[i][j][k] = dp[i - 1][j][k] + a[j] - a[i];
            dp_min[i][k] = min(dp_min[i][k], dp[i][j][k]);
          }
          continue;
        }
        if (dp[i - 1][j][k] != -1) {
          dp[i][j][k] = min(dp[i - 1][j][k] + a[j] - a[i], dp_min[i - 1][k - 1] + a[j] - a[i]);
        } else {
          dp[i][j][k] = dp_min[i - 1][k - 1] + a[j] - a[i];
        }
        dp_min[i][k] = min(dp_min[i][k], dp[i][j][k]);
      }
    }
  }
  /*
  debug("dp");
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      for (int k = 0; k <= m; k++) {
        debug(i);
        debug(j);
        debug(k);
        debug(dp[i][j][k]);
      }
    }
  }
  debug("dp_min");
  for (int i = 0; i < n; i++) {
    for (int k = 0; k <= m; k++) {
      debug(i);
      debug(k);
      debug(dp_min[i][k]);
    }
  }
  */
  cout << dp_min[n - 1][m] << '\n';
  return 0;
}

PLEASE HELP!

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en1 English frank1369blogger 2020-07-03 17:09:30 2739 Initial revision (published)