Submission #1136660

#TimeUsernameProblemLanguageResultExecution timeMemory
1136660LinkedArraySails (IOI07_sails)C++20
0 / 100
1095 ms5704 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define pb push_back const int NUM_ROWS = 1e5; struct Row { int num_sails; int row_id; }; struct RowCustomComparator { bool operator()(Row a, Row b) const { if (a.num_sails == b.num_sails) { return a.row_id < b.row_id; } return a.num_sails < b.num_sails; } }; vector<int> h, k; set<Row, RowCustomComparator> rows; int get_inef () { int ans = 0; for (auto e : rows) { cout << "{" << e.row_id << ", " << e.num_sails << "}\n"; ans += e.num_sails; } return ans; } int main () { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, i, j, max_height, ans; Row row, min_row; cin >> n; h = vector<int>(n + 1); k = vector<int>(n + 1); max_height = 0; for (i = 1; i <= n; i++) { cin >> h[i] >> k[i]; max_height = max(max_height, h[i]); } for (i = 1; i <= max_height; i++) { row = {0, i}; rows.insert(row); } ans = 0; for (i = n; i >= 1; i--) { // cout << get_inef() << "\n"; vector<bool> was_visited(h[i] + 1, false); for (j = 1; j <= k[i]; j++) { auto it = rows.begin(); while ((*it).row_id > h[i] || was_visited[(*it).row_id]) { it++; } min_row = *it; was_visited[min_row.row_id] = true; ans += min_row.num_sails; rows.erase(min_row); min_row.num_sails++; rows.insert(min_row); } // cout << "!! " << ans << " !!\n"; } cout << ans << "\n"; return 0; }
#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...
#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...