제출 #1178827

#제출 시각아이디문제언어결과실행 시간메모리
1178827anmattroi팀들 (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...