제출 #787884

#제출 시각아이디문제언어결과실행 시간메모리
787884YassirSalamaDetecting Molecules (IOI16_molecules)C++14
컴파일 에러
0 ms0 KiB
#include "molecules.h" #include<bits/stdc++.h> using namespace std; #define ll long long const int MAXN=200; const int MAXM=100000; int dp[MAXN][MAXM]; int L,U; bool ok=false; vector<int> ans; vector<int> v; int anns=0; bool solve(int i,int sum,vector<int> a){ if(sum>U) return dp[i][sum]=0; if(dp[i][sum]!=-1) return dp[i][sum]; // anns++; if(L<=sum&&sum<=U){ ans=a; ok=true; return dp[i][sum]=1; } if(i==v.size()) return dp[i][sum]=0; if(ok) return dp[i][sum]=1; vector<int> x=a; x.push_back(i); anns++; bool aa=solve(i+1,sum+v[i],x); if(aa) return dp[i][sum]=1; if(ok) return dp[i][sum]=1; bool bb=solve(i+1,sum,a); if(bb) return dp[i][sum]=1; if(ok) return dp[i][sum]=1; return dp[i][sum]=(aa|bb); } vector<int> find_subset(int l, int u, vector<int> w) { L=l; U=u; v=w; memset(dp,-1,sizeof(dp)); solve(0,0,vector<int>(0)); // cout<<anns<<endl; if(ok) return ans; //If no such subset return vector<int>(0); } int main() { int n, l, u; assert(3 == scanf("%d %d %d", &n, &l, &u)); std::vector<int> w(n); for (int i = 0; i < n; i++) assert(1 == scanf("%d", &w[i])); std::vector<int> result = find_subset(l, u, w); printf("%d\n", (int)result.size()); for (int i = 0; i < (int)result.size(); i++) printf("%d%c", result[i], " \n"[i == (int)result.size() - 1]); }

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

molecules.cpp: In function 'bool solve(int, int, std::vector<int>)':
molecules.cpp:14:32: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   14 |     if(sum>U) return dp[i][sum]=0;
      |                      ~~~~~~~~~~^~
molecules.cpp:20:26: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   20 |         return dp[i][sum]=1;
      |                ~~~~~~~~~~^~
molecules.cpp:22:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |     if(i==v.size()) return dp[i][sum]=0;
      |        ~^~~~~~~~~~
molecules.cpp:22:38: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   22 |     if(i==v.size()) return dp[i][sum]=0;
      |                            ~~~~~~~~~~^~
molecules.cpp:23:29: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   23 |     if(ok) return dp[i][sum]=1;
      |                   ~~~~~~~~~~^~
molecules.cpp:28:29: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   28 |     if(aa) return dp[i][sum]=1;
      |                   ~~~~~~~~~~^~
molecules.cpp:29:29: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   29 |     if(ok) return dp[i][sum]=1;
      |                   ~~~~~~~~~~^~
molecules.cpp:31:29: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   31 |     if(bb) return dp[i][sum]=1;
      |                   ~~~~~~~~~~^~
molecules.cpp:32:29: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   32 |     if(ok) return dp[i][sum]=1;
      |                   ~~~~~~~~~~^~
molecules.cpp:33:22: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   33 |     return dp[i][sum]=(aa|bb);
      |            ~~~~~~~~~~^~~~~~~~
/usr/bin/ld: /tmp/cc4DFZjn.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cc3HieMk.o:molecules.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status