제출 #871376

#제출 시각아이디문제언어결과실행 시간메모리
871376andrei_boaca비스킷 담기 (IOI20_biscuits)C++17
12 / 100
44 ms952 KiB
#include "biscuits.h" #include <bits/stdc++.h> //#include "grader.cpp" using namespace std; typedef long long ll; ll f[65],ans,lg[65]; vector<ll> secv[65]; vector<ll> compress(vector<ll> a) { vector<ll> aux; ll L=0; for(auto i:a) { if(i<0) L+=abs(i); else { if(L!=0) aux.push_back(-L); aux.push_back(i); } } if(L!=0) aux.push_back(-L); return aux; } vector<ll> elim(vector<ll> a, ll nr) { ll init=nr; while(nr>0) { ll p=a.back(); ll L=-1; if(p<0) L=abs(p); else L=(1LL<<p); if(L<=nr) { nr-=L; a.pop_back(); continue; } if(p<0) { a.pop_back(); ll lft=L-nr; a.push_back(-lft); break; } vector<ll> aux=elim(secv[p],nr); a.pop_back(); for(auto i:aux) a.push_back(i); break; } a.push_back(-init); a=compress(a); return a; } long long count_tastiness(long long x, std::vector<long long> a) { for(int i=0;i<=61;i++) f[i]=0; for(int i=0;i<a.size();i++) f[i+1]=a[i]; lg[0]=1; ll suma=0; for(int i=1;i<=61;i++) { lg[i]=0; suma+=(1LL<<(i-1))*f[i]; secv[i].clear(); secv[i]={i-1,i-1}; ll maxim=suma/x; ll dr=(1LL<<i)-1; if(maxim<dr) { ll out=dr-maxim; secv[i]=elim(secv[i],out); } for(auto j:secv[i]) if(j>=0) lg[i]+=lg[j]; } return lg[61]; }

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

biscuits.cpp: In function 'long long int count_tastiness(long long int, std::vector<long long int>)':
biscuits.cpp:65:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   65 |     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...