usaco 2.1 holstein 2008.5.20

来源:互联网 发布:网络加速器官网 编辑:程序博客网 时间:2024/06/16 23:19

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
原创粉丝点击