Submission #1150595

#TimeUsernameProblemLanguageResultExecution timeMemory
1150595Zero_OPEscape Route 2 (JOI24_escape2)C++20
14 / 100
3094 ms4548 KiB
#include <bits/stdc++.h> using namespace std; #define FOR(i, l, r) for(int i = (l); i < (r); ++i) #define ROF(i, l, r) for(int i = (l) - 1; i >= (r); --i) #define mp make_pair #define mt make_tuple #define ff first #define ss second #define all(v) begin(v), end(v) #define rall(v) rbegin(v), rend(v) #define sz(v) (int)v.size() #define sum_of(v) accumulate(all(v), 0ll) #define pb push_back #define eb emplace_back #define compact(v) v.erase(unique(all(v)), end(v)) #define dbg(x) "[" #x " = " << (x) << "]" #define file(task) if(fopen(task".inp", "r")){ \ freopen(task".inp", "r", stdin); \ freopen(task".ans", "w", stdout); } template<typename T> bool minimize(T& a, const T& b){ if(a > b) return a = b, true; return false; } template<typename T> bool maximize(T& a, const T& b){ if(a < b) return a = b, true; return false; } using ll = long long; using db = double; using ld = long double; using ull = unsigned long long; using pi = pair<int, int>; using pl = pair<ll, ll>; using pd = pair<db, db>; using vi = vector<int>; using vl = vector<ll>; using vb = vector<bool>; using vd = vector<db>; using vpi = vector<pi>; using vpl = vector<pl>; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); const int MAX = 2e3 + 5; const ll inf = (ll)1e18; int N, T; vpi flights[MAX]; vl dp[MAX]; ll solve(int l, int r){ FOR(i, l, r){ if(i == l) fill(all(dp[i]), 0); else fill(all(dp[i]), inf); } FOR(i, l, r){ if(i == r-1){ ll result = inf; FOR(j, 0, sz(flights[i])){ minimize(result, dp[i][j] + flights[i][j].ss - flights[i][j].ff); } return result; } FOR(j, 0, sz(flights[i])){ int ai, bi; tie(ai, bi) = flights[i][j]; FOR(k, 0, sz(flights[i+1])){ int aj, bj; tie(aj, bj) = flights[i+1][k]; if(bi <= aj) minimize(dp[i+1][k], dp[i][j] + aj - ai); else minimize(dp[i+1][k], dp[i][j] + T - ai + aj); } } } assert(0); } void testcase(int num_testcase){ cin >> N >> T; FOR(i, 0, N-1){ int M; cin >> M; flights[i].resize(M); dp[i].resize(M); FOR(j, 0, M) cin >> flights[i][j].ff >> flights[i][j].ss; } int Q; cin >> Q; while(Q--){ int l, r; cin >> l >> r; --l, --r; cout << solve(l, r) << '\n'; } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); // freopen("task.inp", "r", stdin); file("task"); int T = 1; // cin >> T; FOR(i, 0, T) testcase(i); return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:23:32: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   23 |                         freopen(task".inp", "r", stdin); \
      |                         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:115:5: note: in expansion of macro 'file'
  115 |     file("task");
      |     ^~~~
Main.cpp:24:32: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   24 |                         freopen(task".ans", "w", stdout); }
      |                         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:115:5: note: in expansion of macro 'file'
  115 |     file("task");
      |     ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...