/*
ID: Jang Lawrence
PROG: holstein
LANG: C++
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#define mp make_pair
using namespace std;
int need[30];
int n,g,val[16][30],ans,ansx;
int countbit(int x){return x==0?0:1+countbit(x&(x-1));}
void yes(int x)
{
int a[30]={};
for(int i=0;i<g;++i)
if(x&(1<<i))
{
for(int j=0;j<n;++j)
a[j]+=val[g-1-i][j];
}
bool f=1;
for(int i=0;i<n&&f;++i)
if(a[i]<need[i]) f=0;
if(f)
{
int num=countbit(x);
if(num<=ans)
{
ans=num;
if(x>ansx) ansx=x;
}
}
}
int main()
{
#ifndef DEBUG
freopen("holstein.in","r",stdin);
freopen("holstein.out","w",stdout);
#endif
scanf("%d",&n);
for(int i=0;i<n;++i)
scanf("%d",need+i);
scanf("%d",&g);
for(int i=0;i<g;++i)
for(int j=0;j<n;++j)
scanf("%d",&val[i][j]);
ans=100000;
for(int i=1,z=(1<<g);i<z;++i)
yes(i);
printf("%d ",ans);
int nu=ans-1;
for(int i=g-1;i>=0;--i)
if(ansx&(1<<i)){
printf("%d%c",g-i,nu?' ':'\n');
--nu;
}
return 0;
}
USACO:Healthy Holsteins
最新推荐文章于 2013-04-21 19:40:21 发布