제출 #1208410

#제출 시각아이디문제언어결과실행 시간메모리
1208410ansoriRoller Coaster Railroad (IOI16_railroad)C++20
34 / 100
154 ms12944 KiB
#include "railroad.h"
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll inf = 1e16;
long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) {
    int n = (int) s.size();
  	if(n <= 16){
  		vector<vector<ll>> dp(vector<vector<ll>> (1 << n , vector<ll> (n , inf)));
  		for(int i = 0;i < n; ++ i) dp[0][i] = 0;
  		for(int i = 1;i < (1 << n); ++ i){
  			for(int j = 0;j < n; ++ j){
  				if(i & (1 << j)){
  					int z = (i - (1 << j));
  					if(z == 0) dp[i][j] = 0;
					for(int p = 0;p < n; ++ p){
						dp[i][j] = min(dp[i][j] , dp[z][p] + max(0 , t[p] - s[j]));
					}
  				}
  			}
  		}
  		ll ans = inf;
  		for(int i = 0;i < n; ++ i) ans = min(ans , dp[(1 << n) - 1][i]);
  		return ans;
  	}
  	multiset<pair<int , int>> st;
  	for(int i = 0;i < n; ++ i) st.insert({s[i] , t[i]});
  	int x = st.begin() -> second;
  	st.erase(st.begin());
  	for(int i = 1;i < n; ++ i){
  		auto to = st.lower_bound({x , 0});
  		//cout << to -> first << ' ' << to -> second << '\n';
  		if(to == st.end()) return 1;
  		x = to -> second;
  		st.erase(to);
  	}
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

railroad.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
railroad_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...