# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
250520 | Vladikus004 | San (COCI17_san) | C++14 | 351 ms | 8896 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define inf 2e9
#define int long long
#define all(v) v.begin(), v.end()
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair <int, int> pii;
const int N = 41;
int n, h[N], g[N];
ll k;
vector <ll> v1[21], v2[21];
bool can(int mask){
int mx = -inf;
for (int i = 0; i < n; i++){
if (!(mask & (1LL<<i))) continue;
if (mx > h[i]) return false;
mx = h[i];
}
return true;
}
ll get_sum(int mask){
ll sum = 0;
for (int i = 0; i < n; i++){
if (!(mask & (1LL<<i))) continue;
sum += g[i];
}
return sum;
}
int f(int x, int sz){
int cnt = 0;
for (int i = sz - 1; i >= 0; i--){
if ((1LL<<i)&x) return cnt;
cnt++;
}
}
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
#ifdef LOCAL
freopen("input.txt", "r", stdin);
#endif // LOCAL
// cout << __builtin_ctz(4) << "\n";
cin >> n >> k;
for (int i = 0; i < n; i++){
cin >> h[i] >> g[i];
}
if (n & 1){
h[n] = inf;
++n;
}
int ans = 0;
int sz = n / 2;
for (int mask = 1; mask < (1LL<<sz); mask++){
if (can(mask)){
ll sum = get_sum(mask);
v1[f(mask, sz)].push_back(sum);
if (sum >= k)
ans += 1;
}
}
for (int mask = 1; mask < (1LL<<sz); mask++){
int cmask = mask<<sz;
if (can(cmask)){
ll sum = get_sum(cmask);
v2[__builtin_ctz(cmask) - sz].push_back(sum);
if (sum >= k)
ans += 1;
}
}
for (int i = 0; i < sz; i++){
for (int g = 0; g < sz; g++){
if (h[sz - 1 - i] > h[g + sz]) continue;
for (int j = 0; j < v1[i].size(); j++){
// cout << i << " : " << v1[i][j] << "\n";
ans += v2[g].size()-(lower_bound(all(v2[g]), k - v1[i][j])-v2[g].begin());
}
}
}
cout << ans;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |