제출 #1178827

#제출 시각아이디문제언어결과실행 시간메모리
1178827anmattroiTeams (IOI15_teams)C++17
0 / 100
163 ms14832 KiB
#include "teams.h" #include <bits/stdc++.h> #define maxn 500005 #define fi first #define se second using namespace std; using ii = pair<int, int>; int n; int a[maxn], b[maxn], prefixSum[maxn], L[maxn], R[maxn], prefixMax[maxn]; void init(int N, int A[], int B[]) { n = N; for (int i = 0; i < N; i++) a[i] = A[i]; for (int i = 0; i < N; i++) b[i] = B[i]; sort(a, a + N); sort(b, b + N); } int can(int M, int K[]) { sort(K, K+M); int64_t sum = 0; for (int i = 0; i < M; i++) sum += K[i]; if (sum > n) return 0; for (int i = 0; i < M; i++) { prefixSum[i+1] = prefixSum[i] + K[i]; L[i+1] = lower_bound(b, b+n, K[i])-b; R[i+1] = n-(upper_bound(a, a+n, K[i])-a); } prefixMax[0] = INT_MIN; for (int i = 1; i <= M; i++) prefixMax[i] = max(prefixMax[i-1], L[i] - prefixSum[i-1]); int ans = INT_MAX; for (int i = 1; i <= M; i++) ans = min(ans, n - prefixMax[i] - (R[i] + prefixSum[i])); return (ans >= 0); } /* 4 1 2 2 3 2 3 2 4 2 2 1 3 2 1 1 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...