# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
156512 | a_player | Detecting Molecules (IOI16_molecules) | C++14 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define f first
#define s second
#define mp make_pair
#define pb push_back
using namespace std;
//typedef long long ll;
pair<int,int> dp[1001][1001];
int v[1001];
int N,uu,ll;
bool ric(int n,int val){
if(val>=uu&&val<=ll)return 1;
if(n==N)return 0;
if(val>ll)return 0;
if(dp[n][val].f!=-1)return dp[n][val].f;
if(ric(n+1,val)){
dp[n][val].f=1;
dp[n][val].s=0;
return 1;
}
else if(ric(n+1,val+v[n])){
dp[n][val].f=1;
dp[n][val].s=1;
return 1;
}
else {
dp[n][val].f=0;
dp[n][val].s=-1;
return 0;
}
return 0;
}
vector<int> find_subset(int l,int u,vector<int> w){
vector<int> sol;
if(w[0]*w.size()<u)return sol;
if(w[0]>l)return sol;
int h=u/w[0];
int s=h*w[0];
if(s+w[0]>l)return sol;
if(s==u){
for(int i=0;i<h;i++)sol.push_back(i);
return sol;
}
if(s+w[0]>=u&&s+w[0]<=l){
for(int i=0;i<h+1;i++)sol.push_back(i);
retur sol;
}
return sol;
}