Submission #577806
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
#define FZ(n) memset((n),0,sizeof(n))
#define FMO(n) memset((n),-1,sizeof(n))
#define F first
#define S second
#define PB push_back
#define ALL(x) begin(x),end(x)
#define SZ(x) ((int)(x).size())
#define IOS ios_base::sync_with_stdio(0); cin.tie(0)
template<typename A, typename B>
ostream& operator <<(ostream &s, const pair<A,B> &p) {
return s<<"("<<p.first<<","<<p.second<<")";
}
template<typename T>
ostream& operator <<(ostream &s, const vector<T> &c) {
s<<"[ ";
for (auto it : c) s << it << " ";
s<<"]";
return s;
}
// Let's Fight!
const int MXN = 1005;
const int MXK = 54;
const int INF = 1029384756;
int N, K, ip[MXN];
int dp[MXK][MXN][MXN];
int bk[MXK][MXN][MXN];
int go(int l, int r, int k) {
if (l == r) return 0;
if (r-l+1 > (1LL << k)) return INF;
if (r-l == 1) {
return ip[r] - ip[l];
}
int &ret = dp[k][l][r];
if (ret != -1) return ret;
ret = INF;
go(l, r-1, k);
go(l+1, r, k);
int ll = bk[k][l][r-1];
int rr = bk[k][l+1][r];
if (ll == -1) ll = l;
if (rr == -1) rr = r-1;
/*
if (r - l <= k) {
ll = l;
rr = r-1;
}
*/
for (int m = ll; m<=rr; m++) {
int c = go(l, m, k-1) + go(m+1,r, k-1) + ip[r] - ip[m];
if (ret > c) {
ret = c;
bk[k][l][r] = m;
}
}
return ret;
}
int main() {
IOS;
while (cin >> N >> K) {
for (int i=0; i<N; i++)
cin >> ip[i];
sort(ip, ip+N);
FMO(dp);
FMO(bk);
cout << go(0, N-1, K) << endl;
}
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | K - Optimal Tournament |
| User | bcw0x1bd2 |
| Language | C++11 (GCC 4.8.1) |
| Score | 100 |
| Code Size | 1536 Byte |
| Status | AC |
| Exec Time | 1637 ms |
| Memory | 427240 KiB |
Judge Result
| Set Name | All | ||
|---|---|---|---|
| Score / Max Score | 100 / 100 | ||
| Status |
|
| Set Name | Test Cases |
|---|---|
| All | 00_sample_00, 00_sample_01, 00_sample_02, 10_naive_rnd_small_000, 10_naive_rnd_small_001, 10_naive_rnd_small_002, 10_naive_rnd_small_003, 10_naive_rnd_small_004, 11_naive_rnd_med_000, 11_naive_rnd_med_001, 11_naive_rnd_med_002, 11_naive_rnd_med_003, 11_naive_rnd_med_004, 12_naive_rnd_large_000, 12_naive_rnd_large_001, 12_naive_rnd_large_002, 12_naive_rnd_large_003, 12_naive_rnd_large_004, 12_naive_rnd_large_005, 12_naive_rnd_large_006, 12_naive_rnd_large_007, 22_near_value_000, 22_near_value_001, 22_near_value_002, 22_near_value_003, 22_near_value_004, 32_minim_K_000, 32_minim_K_001, 32_minim_K_002, 32_minim_K_003, 32_minim_K_004, 42_block_000, 42_block_001, 42_block_002, 42_block_003, 42_block_004 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00 | AC | 836 ms | 427172 KiB |
| 00_sample_01 | AC | 830 ms | 427064 KiB |
| 00_sample_02 | AC | 831 ms | 427060 KiB |
| 10_naive_rnd_small_000 | AC | 830 ms | 427064 KiB |
| 10_naive_rnd_small_001 | AC | 831 ms | 427064 KiB |
| 10_naive_rnd_small_002 | AC | 833 ms | 427060 KiB |
| 10_naive_rnd_small_003 | AC | 825 ms | 427060 KiB |
| 10_naive_rnd_small_004 | AC | 822 ms | 427060 KiB |
| 11_naive_rnd_med_000 | AC | 834 ms | 427232 KiB |
| 11_naive_rnd_med_001 | AC | 839 ms | 427060 KiB |
| 11_naive_rnd_med_002 | AC | 829 ms | 427060 KiB |
| 11_naive_rnd_med_003 | AC | 837 ms | 427060 KiB |
| 11_naive_rnd_med_004 | AC | 841 ms | 427056 KiB |
| 12_naive_rnd_large_000 | AC | 1022 ms | 427184 KiB |
| 12_naive_rnd_large_001 | AC | 1084 ms | 427188 KiB |
| 12_naive_rnd_large_002 | AC | 1458 ms | 427192 KiB |
| 12_naive_rnd_large_003 | AC | 1176 ms | 427192 KiB |
| 12_naive_rnd_large_004 | AC | 954 ms | 427188 KiB |
| 12_naive_rnd_large_005 | AC | 1486 ms | 427184 KiB |
| 12_naive_rnd_large_006 | AC | 1279 ms | 427192 KiB |
| 12_naive_rnd_large_007 | AC | 1181 ms | 427192 KiB |
| 22_near_value_000 | AC | 1119 ms | 427192 KiB |
| 22_near_value_001 | AC | 1118 ms | 427192 KiB |
| 22_near_value_002 | AC | 1087 ms | 427228 KiB |
| 22_near_value_003 | AC | 1027 ms | 427192 KiB |
| 22_near_value_004 | AC | 1090 ms | 427192 KiB |
| 32_minim_K_000 | AC | 1016 ms | 427184 KiB |
| 32_minim_K_001 | AC | 1024 ms | 427188 KiB |
| 32_minim_K_002 | AC | 945 ms | 427188 KiB |
| 32_minim_K_003 | AC | 974 ms | 427188 KiB |
| 32_minim_K_004 | AC | 969 ms | 427192 KiB |
| 42_block_000 | AC | 1637 ms | 427240 KiB |
| 42_block_001 | AC | 913 ms | 427188 KiB |
| 42_block_002 | AC | 981 ms | 427184 KiB |
| 42_block_003 | AC | 1053 ms | 427220 KiB |
| 42_block_004 | AC | 981 ms | 427192 KiB |