Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define gc c=getchar()
- #define r(x) read(x)
- #define ll long long
- template<typename T>
- inline void read(T&x){
- x=0;T k=1;char gc;
- while(!isdigit(c)){if(c=='-')k=-1;gc;}
- while(isdigit(c)){x=x*10+c-'0';gc;}x*=k;
- }
- const int N=40000;
- int n,p;
- bool vis[N];
- bool F[N];
- int a[1005];
- int b[505];
- bool f(int x){
- if(x<=0)return !x;
- if(vis[x])return F[x];
- vis[x]=1;
- for(int i=1;i<=(n<<1);++i){
- F[x]|=f(x-a[i]);
- }
- return F[x];
- }
- int main(){
- // freopen(".in","r",stdin);
- // freopen(".out","w",stdout);
- r(n),r(p);
- for(int i=1;i<=(n<<1);++i)r(a[i]);
- while(p){
- int c=0,s=0;
- if(!f(p))p+=100,c=1;
- for(int i=1;i<=n;++i)r(b[i]);
- for(int i=1;i<=n;++i){
- if(f(p-a[b[i]])){
- s=b[i];
- p-=a[b[i]];
- break;
- }
- }
- printf("%d %d\n",c,s);
- fflush(stdout);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement