제출 #865803

#제출 시각아이디문제언어결과실행 시간메모리
865803green_gold_dogSeesaw (JOI22_seesaw)C++17
0 / 100
0 ms348 KiB
//#pragma GCC optimize("Ofast") //#pragma GCC target("avx,avx2,sse,sse2,sse3,ssse3,sse4,abm,popcnt,mmx") #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef double db; typedef long double ldb; typedef complex<double> cd; constexpr ll INF64 = 9'000'000'000'000'000'000, INF32 = 2'000'000'000, MOD = 1'000'000'007; constexpr db PI = acos(-1); constexpr bool IS_FILE = false, IS_TEST_CASES = false; random_device rd; mt19937 rnd32(rd()); mt19937_64 rnd64(rd()); template<typename T> bool assign_max(T& a, T b) { if (b > a) { a = b; return true; } return false; } template<typename T> bool assign_min(T& a, T b) { if (b < a) { a = b; return true; } return false; } template<typename T> T square(T a) { return a * a; } template<> struct std::hash<pair<ll, ll>> { ll operator() (pair<ll, ll> p) const { return ((__int128)p.first * MOD + p.second) % INF64; } }; void solve() { ll n; cin >> n; vector<ll> arr(n); ll sum = 0; for (ll i = 0; i < n; i++) { cin >> arr[i]; sum += arr[i]; } vector<tuple<ll, ll, ll>> now(1, make_tuple(sum, 0, n - 1)); long double st = sum / (long double)n; long double mi = st, ma = st; vector<pair<long double, long double>> a; for (ll j = 1; j < n; j++) { vector<tuple<ll, ll, ll>> nnow; for (auto[x, l, r] : now) { nnow.emplace_back(x - arr[l], l + 1, r); nnow.emplace_back(x - arr[r], l, r - 1); } now.clear(); sort(nnow.begin(), nnow.end()); for (ll i = 0; i <= nnow.size(); i++) { if ((i == 0 || get<0>(nnow[i - 1]) / (long double)(n - j) <= st) && (i == nnow.size() || get<0>(nnow[i]) / (long double)(n - j) >= st)) { if (i > 0) { now.push_back(nnow[i - 1]); } if (i < nnow.size()) { now.push_back(nnow[i]); } break; } } if (now.size() == 1) { assign_min(mi, get<0>(now[0]) / (long double)(n - j)); assign_max(ma, get<0>(now[0]) / (long double)(n - j)); continue; } a.emplace_back(get<0>(now[0]) / (long double)(n - j), get<0>(now[1]) / (long double)(n - j)); } sort(a.begin(), a.end()); long double ans = ma - min(mi, (a.empty() ? mi : a[0].first)); for (ll i = 0; i < a.size(); i++) { assign_max(ma, a[i].second); assign_min(ans, ma - min(mi, (i + 1 < a.size() ? a[i].first : mi))); } cout << setprecision(20) << ans << '\n'; } int main() { if (IS_FILE) { freopen("", "r", stdin); freopen("", "w", stdout); } ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); ll t = 1; if (IS_TEST_CASES) { cin >> t; } for (ll i = 0; i < t; i++) { solve(); } }

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

seesaw.cpp: In function 'void solve()':
seesaw.cpp:71:34: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::tuple<long long int, long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |                 for (ll i = 0; i <= nnow.size(); i++) {
      |                                ~~^~~~~~~~~~~~~~
seesaw.cpp:72:96: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::tuple<long long int, long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   72 |                         if ((i == 0 || get<0>(nnow[i - 1]) / (long double)(n - j) <= st) && (i == nnow.size() || get<0>(nnow[i]) / (long double)(n - j) >= st)) {
      |                                                                                              ~~^~~~~~~~~~~~~~
seesaw.cpp:76:39: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::tuple<long long int, long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   76 |                                 if (i < nnow.size()) {
      |                                     ~~^~~~~~~~~~~~~
seesaw.cpp:91:26: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::pair<long double, long double> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   91 |         for (ll i = 0; i < a.size(); i++) {
      |                        ~~^~~~~~~~~~
seesaw.cpp:93:53: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::pair<long double, long double> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   93 |                 assign_min(ans, ma - min(mi, (i + 1 < a.size() ? a[i].first : mi)));
      |                                               ~~~~~~^~~~~~~~~~
seesaw.cpp: In function 'int main()':
seesaw.cpp:100:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  100 |                 freopen("", "r", stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~
seesaw.cpp:101:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  101 |                 freopen("", "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...