답안 #307351

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
307351 2020-09-27T23:35:34 Z limabeans 구경하기 (JOI13_watching) C++17
50 / 100
100 ms 2000 KB
#include <bits/stdc++.h>
using namespace std;

template<typename T>
void out(T x) { cout << x << endl; exit(0); }
#define watch(x) cout << (#x) << " is " << (x) << endl





using ll = long long;


const int maxn = 1e6 + 5;


int n, small, large;
int a[maxn];

map<vector<int>, bool> dp;





bool solve(int w, int i, int j, int k) {
    if (j>small) return false;
    if (k>large) return false;
    if (i==n) return true;
    vector<int> key = {i,j,k};
    if (dp.count(key)) return dp[key];
    bool &res = dp[key] = false;


    
    // use small
    {
	int to = lower_bound(a,a+n,a[i]+w)-a;
	res |= solve(w, to, j+1, k);
    }

    // use large
    {
	int to = lower_bound(a,a+n,a[i]+2*w)-a;
	res |= solve(w, to, j, k+1);
    }


    return res;
}



bool test(int w) {
    dp.clear();
    return solve(w, 0, 0, 0);
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(0);  cout.tie(0);

    cin>>n>>small>>large;
    assert(n<=100);
    if (small>=n || large>=n) out(1);

    
    for (int i=0; i<n; i++) {
	cin>>a[i];
    }

    sort(a,a+n);

    int lo=0;
    int hi=(int)1e9 + 20;
    while (hi-lo>1) {
	int mid=(lo+hi)/2;

	if (test(mid)) {
	    hi = mid;
	} else {
	    lo = mid;
	}
    }

    cout<<hi<<endl;
    
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 288 KB Output is correct
6 Correct 1 ms 384 KB Output is correct
7 Correct 1 ms 384 KB Output is correct
8 Correct 4 ms 384 KB Output is correct
9 Correct 4 ms 384 KB Output is correct
10 Correct 64 ms 1024 KB Output is correct
11 Correct 69 ms 1024 KB Output is correct
12 Correct 100 ms 2000 KB Output is correct
13 Correct 1 ms 384 KB Output is correct
14 Correct 1 ms 384 KB Output is correct
15 Correct 1 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 512 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -