usaco 2.1 holstein 2008.5.20

usaco 2.1 holstein 2008.5.20

{

ID:

PROG: holstein

LANG: PASCAL

}

program p_holstein;

constfin='holstein.in';fout='holstein.out';

         maxv=25;maxg=15;

type

   arr1=array[1..maxg,1..maxv]of longint;

   arr2=array[1..maxv]of longint;

   arr3=array[1..maxv]of longint;

var

 a:arr1;b,y:arr2;x:arr3;

 f:array[1..maxv]of boolean;

 f1,f2:text;tt:boolean;

 l,v,g,i,r,u:longint;

procedure init;

var i,j:longint;

begin

 assign(f1,fin);reset(f1);

 assign(f2,fout);rewrite(f2);

 read(f1,v);

  fori:=1 to v do read(f1,b[i]);

 read(f1,g);

  fori:=1 to g do

    for j:=1 to v do

      read(f1,a[i,j]);

 end;

 

 procedure print;

 vari:longint;

 begin

   iftt=false then

    begin

    write(f2,l);

  for i:=1 to l do write(f2,' ',x[i]);

writeln(f2);

  tt:=true;

    end;

end;

 function tr:boolean;

 vark:longint;

 begin

  tr:=true;

  for k:=1 to v do if y[k]<b[k] then exit(false);

 end;

procedure deal(p:longint);

var j,k:longint;

begin

  ifp>i+1 then exit;

  iftr then begin l:=p-1;print;exit;end

 else

  forj:=x[p-1]+1 to g do

      begin

          x[p]:=j;

          for k:=1 to v do inc(y[k],a[j,k]);

          deal(p+1);

          for k:=1 to v do dec(y[k],a[j,k]);

       end;

 end;

{-----------------------}

begin

  fillchar(y,sizeof(y),0);

  init;i:=0;tt:=false;

  repeat

       inc(i);

       for r:=1 to g-i+1 do

        begin

         for u:=1 to v do

           y[u]:=a[r,u];

         x[1]:=r;

         deal(2);

        end;

  until tt;

 

  close(f1);

  close(f2);

end.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值