제출 #705411

#제출 시각아이디문제언어결과실행 시간메모리
705411pavementBigger segments (IZhO19_segments)C++17
37 / 100
1563 ms4160 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; #define int long long #define mp make_pair #define mt make_tuple #define pb push_back #define ppb pop_back #define eb emplace_back #define g0(a) get<0>(a) #define g1(a) get<1>(a) #define g2(a) get<2>(a) #define g3(a) get<3>(a) mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); using db = double; using ll = long long; using ld = long double; using ii = pair<int, int>; using iii = tuple<int, int, int>; using iiii = tuple<int, int, int, int>; template<class key, class value = null_type, class cmp = less<key> > using ordered_set = tree<key, value, cmp, rb_tree_tag, tree_order_statistics_node_update>; int n, a[500005], p[500005]; ii dp[500005]; vector<pair<int, ii> > container; void upd(int p, ii v) { container.eb(p, v); } ii qry(int p) { ii ret = mp(-(int)1e16, -(int)1e16); for (auto [x, y] : container) { if (x <= p) ret = max(ret, y); } return ret; } main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; p[i] = a[i] + p[i - 1]; auto tmp = qry(p[i]); tmp.second -= p[i]; dp[i] = max(mp(1ll, -p[i]), tmp); upd(p[i] - dp[i].second, mp(dp[i].first + 1, p[i])); } cout << dp[n].first << '\n'; }

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

segments.cpp:42:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   42 | main() {
      | ^~~~
#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...