제출 #431241

#제출 시각아이디문제언어결과실행 시간메모리
431241Collypso선물상자 (IOI15_boxes)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #define ll long long #define ld long double #define pii pair<int, int> #define pll pair<ll, ll> #define vt vector #define pb push_back #define all(x) (x).begin(), (x).end() #define sz(x) (int) (x).size() #pragma GCC optimize ("O3") #pragma GCC optimize ("O2") #define F first #define S second //#define endl '\n' #define int long long using namespace std; ll delivery(int N, int K, int L, int p[]) { if (K == 1) { ll ans = 0; for(int i = 0; i < N; i++) ans += 2 * min(p[i], L - p[i]); return ans; } if (K == N) { vt<int> v, pos; for(int i = 0; i < N; i++) v.pb(p[i]); sort(all(v)); pos.pb(v[0]); for(int i = 1; i < N; i++) if (v[i] != *pos.rbegin()) pos.pb(v[i]); ll mn = L; for(int i = 0; i < sz(pos) - 1; i++) mn = min(mn, 2ll * pos[i] + 2ll * (L - pos[i + 1])); mn = min(mn, 2ll * (L - pos[0])); mn = min(mn, 2ll * (*pos.rbegin())); return mn; } if (N <= 10) { vt<int> order(N); for(int i = 0; i < N; i++) order[i] = i; //for(int x : order) cout << x << " "; int mn = INT_MAX; do { int dp[N][K + 1]; dp[0][K] = 2 * min(p[order[0]], L - p[order[0]]); for(int i = K; i >= 0; i--) dp[0][i] = min(p[order[0]], L - p[order[0]]); for(int i = 1; i < N; i++) { int tmp = (L - max(p[order[i]], p[order[i - 1]])); tmp += min(p[order[i]], p[order[i - 1]]); int dist = min(abs(p[order[i]] - p[order[i - 1]]), tmp); dp[i][K] = dp[i - 1][1] + dist + min(p[order[i]], L - p[order[i]]); dp[i][K - 1] = dp[i - 1][K] + min(p[order[i]], L - p[order[i]]); for(int j = K - 2; j >= 0; j--) dp[i][j] = dp[i - 1][j + 1] + dist; } int cur_mn = INT_MAX; for(int i = 0; i <= K; i++) cur_mn = min(cur_mn, dp[N - 1][i]); mn = min(mn, cur_mn + min(p[order[N - 1]], L - p[order[N - 1]])); //for(int x : order) cout << p[x] << " "; //cout << endl; for(int i = K; i >= 0; i--) { //for(int j = 0; j < N; j++) cout << dp[j][i] << " "; //cout << endl; } //cout << endl; } while (next_permutation(all(order))); return mn; } }

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

boxes.cpp: In function 'long long int delivery(long long int, long long int, long long int, long long int*)':
boxes.cpp:80:1: warning: control reaches end of non-void function [-Wreturn-type]
   80 | }
      | ^
/usr/bin/ld: /tmp/ccZTGgOl.o: in function `main':
grader.c:(.text.startup+0x1ef): undefined reference to `delivery(int, int, int, int*)'
collect2: error: ld returned 1 exit status