답안 #231009

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
231009 2020-05-12T10:25:47 Z AlexLuchianov Ice Hockey World Championship (CEOI15_bobek) C++14
10 / 100
239 ms 8672 KB
#include <iostream>
#include <vector>
#include <algorithm>
#include <cassert>
#include <cmath>

using namespace std;

using ll = long long;
#define MIN(a, b) (((a) < (b)) ? (a) ? (b))
#define MAX(a, b) (((a) < (b)) ? (b) : (a))

int const nmax = 40;

int lowerthan(vector<ll> &samples, ll target){
  int x = 0;
  for(int jump = (1 << 20); 0 < jump; jump /= 2){
    if(x + jump < samples.size() && samples[x + jump] <= target)
      x += jump;
  }
  if(samples[x] <= target)
    return x + 1;
  else
    return x;
}

void _generate(vector<ll> v, vector<ll> &result){
  int n = v.size();
  for(int mask = 0; mask < (1 << n); mask++){
    ll sum = 0;
    for(int i = 0; i < n; i++)
      if(0 < ((1 << i) & mask))
        sum += v[i];
    result.push_back(sum);
  }
}

ll _count(vector<ll> v, vector<ll> &samples, ll target){
  int n = v.size();
  ll result = 0;
  for(int mask = 0; mask < (1 << n); mask++){
    ll sum = 0;
    for(int i = 0; i < n; i++)
      if(0 < ((1 << i) & mask))
        sum += v[i];
    result += lowerthan(samples, target - sum);
  }
  return result;
}

int main()
{
  int n;
  ll lim;
  cin >> n >> lim;
  vector<ll> v1, v2;
  for(int i = 1;i <= n; i++){
    ll val;
    cin >> val;
    if(i <= n / 2)
      v1.push_back(val);
    else
      v2.push_back(val);
  }
  vector<ll> samples;
  _generate(v1, samples);
  cout << _count(v2, samples, lim);
  return 0;
}

Compilation message

bobek.cpp: In function 'int lowerthan(std::vector<long long int>&, ll)':
bobek.cpp:18:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(x + jump < samples.size() && samples[x + jump] <= target)
        ~~~~~~~~~^~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 256 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 288 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 22 ms 1020 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 30 ms 1528 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 47 ms 1528 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 197 ms 4592 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 23 ms 1020 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 239 ms 8672 KB Output isn't correct
2 Halted 0 ms 0 KB -