제출 #239257

#제출 시각아이디문제언어결과실행 시간메모리
239257urd05Detecting Molecules (IOI16_molecules)C++14
46 / 100
1091 ms13848 KiB
#include <bits/stdc++.h> using namespace std; long long dp[10001][170]; bool val(int x,int y) { return (dp[x][y/64]>>(y%64))&1; } vector<int> find_subset(int l, int u,vector<int> w) { dp[0][0]=1; for(int i=0;i<w.size();i++) { int ind=i+1; for(int j=0;j<=u;j++) { if (j+w[i]<=u) { if (val(ind-1,j)) { dp[ind][(j+w[i])/64]|=(1LL<<((j+w[i])%64)); } } if (val(ind-1,j)) { dp[ind][j/64]|=(1LL<<(j%64)); } } } int n=w.size(); int pos=-1; for(int i=l;i<=u;i++) { if (val(n,i)) { pos=i; } } if (pos==-1) { vector<int> emp; return emp; } vector<int> ret; int sum=pos; for(int i=n-1;i>=0;i--) { if (sum>=w[i]&&val(i,sum-w[i])) { ret.push_back(i); sum-=w[i]; } } return ret; }

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

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:12:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<w.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...
#Verdict Execution timeMemoryGrader output
Fetching results...