제출 #1263067

#제출 시각아이디문제언어결과실행 시간메모리
1263067silentloopDetecting Molecules (IOI16_molecules)C++20
9 / 100
0 ms328 KiB
#include <bits/stdc++.h> #define ll long long #define sz(x) int(x.size()) #define fr first #define se second #define pb push_back #define mp make_pair #define all(x) x.begin(), x.end() using namespace std; vector<int> arm(vector<pair<int, int>> &dp, int j) { ll sig = j; vector<int> ans; while (sig >= 0) { if (dp[sig].se >= 0) ans.pb(dp[sig].se); sig = dp[sig].fr; } return ans; } std::vector<int> find_subset(int l, int u, std::vector<int> w) { vector<int> ans; if (l > u) return ans; vector<pair<ll, ll>> v; ll i, j, ma=0, maI=0; for (i = 0; i < sz(w); i++) { v.pb({w[i], i}); } sort(all(v)); i=sz(v)-1; while(i>=0&&l>v[i].fr*2) { l=l-v[i].fr; u=u-v[i].fr; ans.pb(v[i].se); for(j=0; j<sz(v); j++) { if(l<=v[j].fr&&v[j].fr<=u) return ans; } i--; } while(i+1<sz(v)) v.pop_back(); if(i<0) { ans.resize(0); return ans; } vector<pair<int, int>> dp(u + 1); vector<bool> pos(u + 1); pos[0] = 1; dp[0].fr = -1; dp[0].se = -1; for (i = 0; i < sz(v); i++) { ll x = v[i].fr; int nod = v[i].se; for (j = u; j >= x; j--) { if (pos[j]) continue; if (pos[j - x]) { pos[j] = 1; dp[j].fr = j - x; dp[j].se = nod; if (j >= l) { vector<int>ret=arm(dp, j); for(auto k:ret) ans.pb(k); return ans; } } } } ans.resize(0); return ans; }

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

molecules.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
molecules_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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...