Submission #519654

#TimeUsernameProblemLanguageResultExecution timeMemory
519654DanerZein비스킷 담기 (IOI20_biscuits)C++14
21 / 100
1087 ms332 KiB
#include "biscuits.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAX_N=1e5;
ll bits[62];
long long count_tastiness(long long x, std::vector<long long> a) {
  if(x!=1){
    ll res=0;
    for(ll i=0;i<=MAX_N;i++){
      memset(bits,0,sizeof bits);
      for(int j=0;j<a.size();j++) bits[j]=a[j];
      bool sw=1;
      for(ll j=0;j<30;j++){
	if(i&(1<<j)){
	  if(bits[j]<x){
	    sw=0;
	    break;
	  }
	  bits[j]-=x;
	}
	bits[j+1]+=(bits[j]/2);
      }
      res+=sw;
    }
    return res;
  }
  memset(bits,0,sizeof bits);
  for(int i=0;i<a.size();i++)
    bits[i]=a[i];
  for(ll j=0;j<=60;j++){
    if(bits[j]>2){
      ll y;
      if(bits[j]%2==0) y=(bits[j]-2)/2;
      else y=(bits[j]-1)/2;
      bits[j+1]+=y;
      bits[j]-=(2*y);
    }
  }
  ll ans=1;
  for(int i=0;i<=61;i++){
    if(bits[i]==0){
      ll tot=1;
      for(int j=i-1;j>=0;j--){
        if(bits[j]==0){
	  break;
	}
	tot*=(ll)2;
      }
      ll rp=tot;
      ll p2=1;
      for(int j=i-1;j>=0;j--){
	if(bits[j]==0) break;
	p2*=(ll)2;
	if(bits[j]==2)
	  rp+=(tot/p2);
      }
      ans*=rp;
    }
  }
  //cout<<ans<<" "<<res<<endl;
  return ans;
}

Compilation message (stderr)

biscuits.cpp: In function 'long long int count_tastiness(long long int, std::vector<long long int>)':
biscuits.cpp:12:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   12 |       for(int j=0;j<a.size();j++) bits[j]=a[j];
      |                   ~^~~~~~~~~
biscuits.cpp:29:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |   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...