제출 #1170617

#제출 시각아이디문제언어결과실행 시간메모리
1170617anmattroi봉쇄 시간 (IOI23_closing)C++17
0 / 100
41 ms8632 KiB
#include "closing.h" #include <bits/stdc++.h> #define maxn 200005 using namespace std; int n, x, y; int64_t s[maxn], k; int64_t distance(int a, int b) { if (a > b) swap(a, b); return s[b] - s[a]; } int sub0() { vector<int64_t> nho; for (int i = 0; i < n; i++) nho.emplace_back(min(distance(x, i), distance(y, i))); sort(nho.begin(), nho.end()); int64_t ans = 0; for (int i = 0; i < n; i++) { ans += nho[i]; if (ans > k) return i; } return n; } int sub1() { int64_t ans = 0; for (int i = x; i <= y; i++) ans += min(distance(i, x), distance(y, i)); if (ans > k) return 0; int best = y-x+1; vector<int64_t> nho, outliers; for (int i = 0; i < n; i++) nho.emplace_back(max(distance(i, x), distance(y, i))); for (int i = 0; i < x; i++) outliers.emplace_back(distance(i, x)); for (int i = y+1; i < n; i++) outliers.emplace_back(distance(i, y)); sort(outliers.begin(), outliers.end()); sort(nho.begin(), nho.end()); for (int i = 0; i < n; i++) { ans += nho[i]; if (ans > k) return best; int p = outliers.size(); int64_t sum = ans; for (int j = 0; j < outliers.size(); j++) { sum += outliers[j]; if (sum > k) { p = j; break; } } if (p + y-x+1 >= i + 1) best = max(best, p + i + 1 + y-x+1); } return best; } int max_score(int N, int X, int Y, long long K, vector<int> U, vector<int> V, vector<int> W) { n = N; x = X; y = Y; k = K; for (int i = 1; i < N; i++) s[i] = s[i-1] + W[i-1]; return max(sub0(), sub1()); }
#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...