제출 #1067075

#제출 시각아이디문제언어결과실행 시간메모리
1067075n1k비스킷 담기 (IOI20_biscuits)C++17
0 / 100
3 ms348 KiB
#include "biscuits.h"
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

const int K = 61;
ll X;

vector<ll> sum(K);

map<ll, ll> mem;

ll fast(ll t){
	if(mem.count(t)) return mem[t];
	if(t==1) return 1;
	if(t<=0) return 0;
	ll msb = 63 - __builtin_clzll(t);
	if((1ll<<msb)==t) msb--;

	return mem[t]=fast(1ll<<msb) + fast(min(t, sum[msb]/X+1)-(1ll<<msb));
}

long long count_tastiness(long long x, std::vector<long long> a) {
	sum.assign(K+5, 0);
	mem.clear();
	X = x;
	for(int i=0; i<a.size(); i++){
		sum[i]+=(1ll<<i)*a[i];
		sum[i+1]+=sum[i];
	}
	return fast(1e18 + 5);
}

/*
1
4 1
0 0 0 0
*/

컴파일 시 표준 에러 (stderr) 메시지

biscuits.cpp: In function 'long long int count_tastiness(long long int, std::vector<long long int>)':
biscuits.cpp:28:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |  for(int i=0; i<a.size(); i++){
      |               ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...