제출 #1268288

#제출 시각아이디문제언어결과실행 시간메모리
1268288ArtTopical (NOI23_topical)C++20
100 / 100
921 ms75028 KiB
// - Art - #include <bits/stdc++.h> #define el cout << '\n' #define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; ++i) #define REV(i, b, a) for (int i = (b), _a = (a); i >= _a; --i) #define REP(i, c) for (int i = 0, _c = (c); i < _c; ++i) const int N = 1e6 + 7; using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); long long p[N]; vector<pair<int, int>> rem[N]; int it[N], cnt[N]; int main() { #define name "art" if (fopen(name".inp", "r")) { freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); } ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, k; cin >> n >> k; vector<vector<int>> a(n, vector<int>(2 * k, 0)); REP (i, n) REP (j, k) { cin >> a[i][j]; rem[j].emplace_back(a[i][j], i); } REP (i, n) FOR (j, k, 2 * k - 1) { cin >> a[i][j]; } REP (j, k) { sort(rem[j].begin(), rem[j].end()); } int res = 0; REP (i, n) { bool ok = false; REP (j, k) { while (it[j] < n) { auto &[x, y] = rem[j][it[j]]; if (x <= p[j]) { ++it[j]; ++cnt[y]; if (cnt[y] == k) { FOR (l, k, 2 * k - 1) { p[l - k] += a[y][l]; } ok = true; ++res; } } else { break; } } } if (ok == false) { break; } } vector<int> perm; REP (i, n) { perm.emplace_back(i); } while (clock() / (double)CLOCKS_PER_SEC < 0.9) { shuffle(perm.begin(), perm.end(), rng); REP (j, k) { p[j] = 0; } bool ok = true; int tmp = 0; REP (x, n) { int i = perm[x]; REP (j, k) { if (p[j] < a[i][j]) { ok = false; break; } } if (!ok) { break; } FOR (j, k, 2 * k - 1) { p[j - k] += a[i][j]; } ++tmp; } res = max(res, tmp); } cout << res, el; return 0; }

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

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