結果
問題 | No.1872 Dictionary Order |
ユーザー |
|
提出日時 | 2022-03-11 22:35:10 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 219 ms / 2,000 ms |
コード長 | 1,864 bytes |
コンパイル時間 | 2,095 ms |
コンパイル使用メモリ | 144,000 KB |
最終ジャッジ日時 | 2025-01-28 08:51:16 |
ジャッジサーバーID (参考情報) |
judge4 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 32 |
ソースコード
#pragma GCC optimize("Ofast")#include <iostream>#include <vector>#include <algorithm>#include <map>#include <queue>#include <cstdio>#include <ctime>#include <assert.h>#include <chrono>#include <random>#include <numeric>#include <set>#include <deque>#include <stack>#include <sstream>#include <utility>#include <cstring>#include <unordered_map>#include <unordered_set>#include <tuple>#include <array>#include <bitset>using namespace std;typedef long long int ll;typedef unsigned long long ull;mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());ll myRand(ll B) {return (ull)rng() % B;}inline ll time() {return static_cast<long double>(chrono::duration_cast<chrono::nanoseconds>(chrono::steady_clock::now().time_since_epoch()).count()) * 1e-9;}int main(){cin.tie(nullptr);ios::sync_with_stdio(false);int n,m; cin >> n >> m;vector<int> a(n),p(n);vector<int> v;for(int i=0;i<n;i++){cin >> a[i];}for(int i=0;i<n;i++){cin >> p[i];}vector<int> id(n);for(int i=0;i<n;i++){id[i] = i;}sort(id.begin(), id.end(), [&](auto i,auto j){return p[i] < p[j];});for(int _=0;_<n and m;_++){for(int _i=0;_i<n;_i++){int i = id[_i];if(m < a[i]) continue;if(v.size() and v.back() >= i) continue;bitset<2001> bs;bs[0] = 1;for(int j=i+1;j<n;j++){bs |= (bs<<a[j]);}if(bs[m-a[i]]){m -= a[i];v.push_back(i);break;}}}if(v.size() == 0){cout << -1 << endl;}else{cout << v.size() << endl;for(int i:v){cout << i+1 << " ";}cout << endl;}}