Submission #1314669

#TimeUsernameProblemLanguageResultExecution timeMemory
1314669joshjuiceJourney (NOI18_journey)C++20
100 / 100
60 ms7224 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define rep(x, a, b) for(auto x=a;(a<b?x<b:x>b);(a<b?x++:x--))
#define all(a) a.begin(), a.end()
#define srtvc(a) sort(all(a))
#define bcsrtvc(a) sort(all(a), greater<__typeof__(a[0])>())
#define ppf pop_front
#define ppb pop_back
#define pf push_front
#define pb push_back
#define ef emplace_front
#define eb emplace_back
#define fr first
#define sc second
#define pq priority_queue
#define pii pair<int, int>
#define vc vector
#define dq deque
#define sz(a) a.size()
#define mnto(x,y) x = min(x, (__typeof__(x))y)
#define mxto(x,y) x = max(x, (__typeof__(x))y)
#define setval(arr, x) memset(arr, x, sizeof(arr))

template<typename T>
using vv = vc<vc<T>>;

const int MX = 5e8+1;

int32_t main() {
  ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  int n, m, h;
  cin >> n >> m >> h;
  vc<int> arr(n*m, 0);
  arr[0] = 1;
  rep(i, 0, n-1) {
    rep(j, 0, h) {
      int c, q;
      cin >> c >> q;
      if (c <= i) continue;
      int fl = 0;
      rep(k, q, m) {
        fl = min(MX, fl + arr[i*m + k - q]);
        arr[c*m+k] = min(MX, arr[c*m + k] + fl);
      }
    }
  }
  rep(i, 0, m) cout << arr[(n-1)*m+i] << ' ';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...