Submission #287533

#TimeUsernameProblemLanguageResultExecution timeMemory
287533infinite_iqRoller Coaster Railroad (IOI16_railroad)C++14
34 / 100
97 ms28428 KiB
#include <bits/stdc++.h> using namespace std ; #define mem(dp,i) memset(dp,i,sizeof(dp)) #define C continue typedef long long ll ; typedef vector < int > vi ; const ll inf = 1e18 ; #include "railroad.h" ll n ; ll in [17] , out [17] ; ll dp [(1<<16)+1][17] ; ll bt ( ll mask , ll last ) { if ( __builtin_popcount ( mask ) == n ) return 0ll ; ll &ret = dp [mask][last] ; if ( ret != -1 ) return ret ; ret = inf ; for ( ll nxt = 0 ; nxt < n ; nxt ++ ) { if ( ( mask & ( 1ll << nxt ) ) ) C ; ll cost = max ( 0ll , out [last] - in [nxt] ) ; ret = min ( ret , bt ( mask | ( 1 << nxt ) , nxt ) + cost ) ; } return ret ; } ll plan_roller_coaster ( vi s , vi t ) { mem ( dp , - 1 ) ; n = s.size () ; for ( int i = 0 ; i < n ; i ++ ) { in [i] = s [i] ; out [i] = t [i] ; } out [n] = 1ll ; return bt ( 0 , n ) ; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...