제출 #497632

#제출 시각아이디문제언어결과실행 시간메모리
497632Hanksburger비스킷 담기 (IOI20_biscuits)C++17
21 / 100
188 ms368 KiB
#include "biscuits.h"
#include <bits/stdc++.h>
using namespace std;
vector<long long> B;
long long pow2[65];
long long count_tastiness(long long X, vector<long long> A)
{
	pow2[0]=1;
	for (long long i=1; i<=62; i++)
		pow2[i]=pow2[i-1]*2;
	long long N=A.size(), sum=0;
	for (long long i=0; i<A.size(); i++)
		sum+=pow2[i]*A[i];
	if (sum<=100000)
	{
		long long cnt=1;
		for (long long i=1; i<=sum/X; i++)
		{
			B=A;
			bool ok=1;
			for (long long j=0; j<X; j++)
			{
				long long cur=i;
				for (long long k=N-1; k>=0; k--)
				{
					long long num=min(B[k], cur/pow2[k]);
					B[k]-=num;
					cur-=pow2[k]*num;
					if (!cur)
						break;
				}
				if (cur)
				{
					ok=0;
					break;
				}
			}
			if (ok)
				cnt++;
		}
		return cnt;
	}
	else if (X==1)
	{
		long long P=1, Q=1, R=0;
		for (long long i=0; i<N; i++)
		{
			Q+=A[i];
			if (Q&1)
				R+=P;
			Q/=2;
			if (Q==0)
			{
				Q=1;
				P=R;
				R=0;
			}
			else
				P*=2;
		}
		return P*Q+R;
	}
}

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

biscuits.cpp: In function 'long long int count_tastiness(long long int, std::vector<long long int>)':
biscuits.cpp:12:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   12 |  for (long long i=0; i<A.size(); i++)
      |                      ~^~~~~~~~~
biscuits.cpp:63:1: warning: control reaches end of non-void function [-Wreturn-type]
   63 | }
      | ^
#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...