Submission #884816

#TimeUsernameProblemLanguageResultExecution timeMemory
884816banhcuon14Exhibition (JOI19_ho_t2)C++14
100 / 100
41 ms1632 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second typedef pair<int,int > pii; typedef long long ll; const int mod = 1e9 + 7; const int maxn = 5 + 1e5; int n, m; struct info{ int s, v; info(int _s = 0, int _v = 0): s(_s), v(_v) {}; bool operator < (const info& other) const { return v < other.v; } }; vector<info > a; vector<int > c; namespace subtask1{ bool used[maxn]; int res; void Try(int pos, vector<pair<int,int>>& v, int sz, int prev) { if (pos >= sz) { res = max(res, sz); return; } for (int i = 0; i < (int) c.size(); ++i) { if (!used[i] && c[i] >= prev && c[i] >= v[pos].fi ) { used[i] = true; Try(pos + 1, v, sz, c[i]); used[i] = false; } } } bool cmpA(info& a, info& b) { if (a.v != b.v) return a.v < b.v; return a.s < b.s; } void solve() { cin >> n >> m; a.resize(n+2, info()); c.resize(m+2); for (int i = 0; i < n; ++i) { cin >> a[i].s >> a[i].v; } for (int i = 0; i < m; ++i) { cin >> c[i]; } sort(a.begin(), a.begin()+n, cmpA); for (int mask = 1; mask < (1<<n); ++mask) { vector <pair<int,int > > v; for (int i = 0; i < n; ++i) { if ((mask>>i)&1) { v.push_back(make_pair(a[i].s,a[i].v)); } } memset(used, false, m + 2); Try(0, v, (int) v.size(), -1); } cout << res; } } namespace subtask2 { int dp[maxn]; void solve() { cin >> n >> m; a.resize(n+2, info()); c.resize(m+2); for (int i = 1; i <= n; ++i) { cin >> a[i].s >> a[i].v; } for (int i = 1; i <= m; ++i) { cin >> c[i]; } sort(c.begin() + 1, c.begin() + m + 1); sort(a.begin() + 1, a.begin() + n + 1); for (int j = 1; j <= n; ++j) { int i = lower_bound(c.begin() + 1, c.begin() + m + 1, a[j].s) - c.begin(); int mx = 0, tmp; for(int k = 1; k < i; ++k) mx = max(dp[k], mx); for (int k = i; k <= m; ++k) { tmp = dp[k]; dp[k] = max(dp[k], mx + 1); mx = max(mx, tmp); } } cout << dp[m]; } } namespace subtask3 { void solve() { cin >> n >> m; vector<pair<int,int > > a(n); vector<int > c(m); for (int i = 0; i < n; ++i) { cin >> a[i].first >> a[i].second; } for (int i = 0; i < m; ++i) { cin >> c[i]; } sort(c.begin(),c.end()); sort(a.begin(),a.end(),[] (const pii& a, const pii& b) { if (a.second != b.second) return a.second < b.second; return a.first < b.first; }); int res = 0; for (int i = n-1; i >= 0 && res < m; --i) { if (c[m - res - 1] >= a[i].first) ++res; } cout << res; } } signed main() { #define name "task" if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); } ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); subtask3::solve(); cerr << "Time Elasped: " << fixed << setprecision(3) << 1.0*clock()/CLOCKS_PER_SEC << '\n'; return 0; }

Compilation message (stderr)

joi2019_ho_t2.cpp: In function 'int main()':
joi2019_ho_t2.cpp:120:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  120 |   freopen(name".inp", "r", stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
joi2019_ho_t2.cpp:121:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  121 |   freopen(name".out", "w", stdout);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...