Submission #2550773
Source Code Expand
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <cmath>
#include <iomanip>
#include <numeric>
#include <functional>
#include <queue>
#include <tuple>
#include <map>
using namespace std;
using vi = vector<int>;
using vvi = vector<vi>;
using vs = vector<string>;
using ll = long long;
using vll = vector<ll>;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using vb = vector<char>;
using vvb = vector<vb>;
using vd = vector<double>;
using vvd = vector<vd>;
template<typename T>
vector<T> make_v(size_t a) { return vector<T>(a); }
template<typename T, typename... Ts>
auto make_v(size_t a, Ts... ts) {
return vector<decltype(make_v<T>(ts...))>(a, make_v<T>(ts...));
}
template<typename T, typename V>
typename enable_if<is_class<T>::value == 0>::type
fill_v(T &t, const V &v) { t = v; }
template<typename T, typename V>
typename enable_if<is_class<T>::value != 0>::type
fill_v(T &t, const V &v) {
for (auto &e:t) fill_v(e, v);
}
#define REP(i, a, b) for (int i = a; i < (int)(b); i++)
#define RREP(i, a, b) for (int i = (int)(b) - 1; i >= a; i--)
#define rep(i, n) REP(i, 0, n)
#define rrep(i, n) RREP(i, 0, n)
#define all(x) (x).begin(),(x).end()
#define iter(c) __typeof((c).begin())
#define tr(i, c) for (iter(c) i = (c).begin(); i != (c).end(); i++)
#define mp(a, b) make_pair(a,b)
#define fi first
#define sn second
#define decpii(p) p.fi--,p.sn--;
#ifdef LOCAL
#define dump(c) cerr << "> " << #c << " = " << (c) << endl;
#define dumpn(c) cerr << "> " << #c << " = " << (c) << ", ";
#else
#define dump(c) ;
#define dumpn(c) ;
#endif
template<typename T1, typename T2>
ostream &operator<<(ostream &os, const pair<T1, T2> &p) {
return os << '(' << p.first << ',' << p.second << ')';
}
template<typename T>
ostream &operator<<(ostream &os, const vector<T> &a) {
os << '[';
rep(i, (int) a.size())os << (i ? " " : "") << a[i];
return os << ']';
}
const int INF = 1 << 29;
const int MOD = 1000000007;
int dxf[] = {1, 0, -1, 0};
int dyf[] = {0, -1, 0, 1};
template<class T>
bool chmax(T &a, const T &b) {
if (a < b) {
a = b;
return true;
}
return false;
}
template<class T>
bool chmin(T &a, const T &b) {
if (b < a) {
a = b;
return true;
}
return false;
}
inline vi uni(vi &vec) {
sort(vec.begin(), vec.end());
vec.erase(std::unique(vec.begin(), vec.end()), vec.end());
return vec;
}
struct ____ {
____() {
cin.tie(0);
ios::sync_with_stdio(0);
cout << fixed << setprecision(20);
};
} ________;
ll solve() {
ll N, W;
cin >> N >> W;
vi v(N, 0), w(N, 0);
rep(i, N)cin >> v[i] >> w[i];
ll mxv = *max_element(all(v));
ll mxw = *max_element(all(w));
if (N <= 30) {
int s2 = N / 2;
int s1 = N - s2;
vector<pll> b1(1 << s1), b2(1 << s2);
rep(M, 1 << s1) {
pll wv = mp(0, 0);
rep(i, s1) {
if (((M >> i) & 1) == 1) {
wv.fi += w[i];
wv.sn += v[i];
}
}
b1[M] = wv;
}
rep(M, 1 << s2) {
pll wv = mp(0, 0);
rep(i, s2) {
if (((M >> i) & 1) == 1) {
wv.fi += w[i+s1];
wv.sn += v[i+s1];
}
}
b2[M] = wv;
}
// dumpn(b1); dump(b2);
sort(all(b2));
ll b2_mxv = 0;
tr(it,b2) {
chmax(b2_mxv, it->second);
it->second = b2_mxv;
}
// dump(b2);
ll max_v = 0;
tr(it, b1) {
if(it->first > W) continue;
ll v = it->second;
ll tw = W - (it->first);
auto u = upper_bound(all(b2), mp(tw, 1ll<<50));
// dumpn(u != begin(b2));
if (u != begin(b2)) {
--u;
v += u->second;
}
// dumpn(tw);
// dumpn(*it);
// dumpn(*u);
// dump(v);
chmax(max_v, v);
}
return max_v;
} else if (mxv <= 1000) {
} else {
}
return -1LL;
}
int main() {
// cout << (solve() ? "yes" : "no") << endl;
cout << solve() << endl;
// solve();
return 0;
}
Submission Info
Submission Time |
|
Task |
D - ナップサック問題 |
User |
palpal |
Language |
C++14 (GCC 5.4.1) |
Score |
34 |
Code Size |
4496 Byte |
Status |
WA |
Exec Time |
7 ms |
Memory |
1280 KB |
Judge Result
Set Name |
Sample |
Subtask1 |
Subtask2 |
Subtask3 |
Score / Max Score |
0 / 0 |
34 / 34 |
0 / 33 |
0 / 33 |
Status |
|
|
|
|
Set Name |
Test Cases |
Sample |
subtask00_sample_1.txt, subtask00_sample_2.txt, subtask00_sample_3.txt, subtask00_sample_4.txt |
Subtask1 |
subtask01_0.txt, subtask01_1.txt, subtask01_10.txt, subtask01_11.txt, subtask01_12.txt, subtask01_13.txt, subtask01_14.txt, subtask01_2.txt, subtask01_3.txt, subtask01_4.txt, subtask01_5.txt, subtask01_6.txt, subtask01_7.txt, subtask01_8.txt, subtask01_9.txt, subtask00_sample_1.txt, subtask00_sample_2.txt, subtask00_sample_3.txt, subtask00_sample_4.txt |
Subtask2 |
subtask02_0.txt, subtask02_1.txt, subtask02_10.txt, subtask02_11.txt, subtask02_12.txt, subtask02_13.txt, subtask02_14.txt, subtask02_2.txt, subtask02_3.txt, subtask02_4.txt, subtask02_5.txt, subtask02_6.txt, subtask02_7.txt, subtask02_8.txt, subtask02_9.txt, subtask00_sample_1.txt, subtask00_sample_3.txt |
Subtask3 |
subtask03_0.txt, subtask03_1.txt, subtask03_10.txt, subtask03_11.txt, subtask03_2.txt, subtask03_3.txt, subtask03_4.txt, subtask03_5.txt, subtask03_6.txt, subtask03_7.txt, subtask03_8.txt, subtask03_9.txt, subtask00_sample_1.txt, subtask00_sample_4.txt |
Case Name |
Status |
Exec Time |
Memory |
subtask00_sample_1.txt |
AC |
1 ms |
256 KB |
subtask00_sample_2.txt |
AC |
7 ms |
1280 KB |
subtask00_sample_3.txt |
AC |
1 ms |
256 KB |
subtask00_sample_4.txt |
AC |
1 ms |
256 KB |
subtask01_0.txt |
AC |
7 ms |
1280 KB |
subtask01_1.txt |
AC |
7 ms |
1280 KB |
subtask01_10.txt |
AC |
7 ms |
1280 KB |
subtask01_11.txt |
AC |
7 ms |
1280 KB |
subtask01_12.txt |
AC |
7 ms |
1280 KB |
subtask01_13.txt |
AC |
7 ms |
1280 KB |
subtask01_14.txt |
AC |
7 ms |
1280 KB |
subtask01_2.txt |
AC |
7 ms |
1280 KB |
subtask01_3.txt |
AC |
7 ms |
1280 KB |
subtask01_4.txt |
AC |
6 ms |
1280 KB |
subtask01_5.txt |
AC |
7 ms |
1280 KB |
subtask01_6.txt |
AC |
6 ms |
1280 KB |
subtask01_7.txt |
AC |
7 ms |
1280 KB |
subtask01_8.txt |
AC |
7 ms |
1280 KB |
subtask01_9.txt |
AC |
7 ms |
1280 KB |
subtask02_0.txt |
WA |
1 ms |
256 KB |
subtask02_1.txt |
WA |
1 ms |
256 KB |
subtask02_10.txt |
WA |
1 ms |
256 KB |
subtask02_11.txt |
WA |
1 ms |
256 KB |
subtask02_12.txt |
WA |
1 ms |
256 KB |
subtask02_13.txt |
WA |
1 ms |
256 KB |
subtask02_14.txt |
WA |
1 ms |
256 KB |
subtask02_2.txt |
WA |
1 ms |
256 KB |
subtask02_3.txt |
WA |
1 ms |
256 KB |
subtask02_4.txt |
WA |
1 ms |
256 KB |
subtask02_5.txt |
WA |
1 ms |
256 KB |
subtask02_6.txt |
WA |
1 ms |
256 KB |
subtask02_7.txt |
WA |
1 ms |
256 KB |
subtask02_8.txt |
WA |
1 ms |
256 KB |
subtask02_9.txt |
WA |
1 ms |
256 KB |
subtask03_0.txt |
WA |
1 ms |
256 KB |
subtask03_1.txt |
WA |
1 ms |
256 KB |
subtask03_10.txt |
WA |
1 ms |
256 KB |
subtask03_11.txt |
WA |
1 ms |
256 KB |
subtask03_2.txt |
WA |
1 ms |
256 KB |
subtask03_3.txt |
WA |
1 ms |
256 KB |
subtask03_4.txt |
WA |
1 ms |
256 KB |
subtask03_5.txt |
WA |
1 ms |
256 KB |
subtask03_6.txt |
WA |
1 ms |
256 KB |
subtask03_7.txt |
WA |
1 ms |
256 KB |
subtask03_8.txt |
WA |
1 ms |
256 KB |
subtask03_9.txt |
WA |
1 ms |
256 KB |