Submission #1271330

#TimeUsernameProblemLanguageResultExecution timeMemory
1271330cmiucExhibition (JOI19_ho_t2)C++20
10 / 100
2 ms328 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; int dp[1<<17]; int fun1(){ freopen("input.txt", "r", stdin); int n, m, ans = 0; cin>>n>>m; vector<pair<int,int>> vec(n); vector<int> c(m); for (int i=0;i<n;i++) cin>>vec[i].second>>vec[i].first; sort(begin(vec), end(vec)); for (int i=0;i<m;i++) cin>>c[i]; sort(begin(c), end(c)); for (int i=1;i<=n;i++) dp[i] = 2e9; dp[0] = -1; for (auto [b, a] : vec){ int k = upper_bound(begin(c), end(c), a - 1) - begin(c); int u = upper_bound(dp, dp + n + 1, k) - dp; if (dp[u-1] >= m-1 or k == m) continue; dp[u] = max(k, dp[u-1] + 1); ans = max(ans, u); } fclose(stdin); return ans; } int fun2(){ // freopen("input.txt", "r", stdin); int n, m, ans = 0; cin>>n>>m; vector<pair<int,int>> vec(n); vector<int> c(m); for (int i=0;i<n;i++) cin>>vec[i].second>>vec[i].first; sort(begin(vec), end(vec)); for (int i=0;i<m;i++) cin>>c[i]; sort(begin(c), end(c)); for (int msk = 1;msk<(1<<n);msk++){ int p = 0; for (int i=0;i<n;i++){ if (((1<<i) & msk) == 0) continue; if (p == m) p = m + 1; while (p < m and c[p] < vec[i].second) p++; p++; } if (p <= m) ans = max(ans, __builtin_popcount(msk)); } return ans; } int main(){ cout<<fun2()<<'\n'; }

Compilation message (stderr)

joi2019_ho_t2.cpp: In function 'int fun1()':
joi2019_ho_t2.cpp:9:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    9 |         freopen("input.txt", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...