Program t6; Var f:array [0..32000] of longint; a:array [1..3,1..60] of longint; b:array [1..4,1..60,1..2] of longint; t:array [1..60] of integer; n,i,j,m,len,k:longint; Function max(a,b:longint):longint; Begin if a>b then max:=a else max:=b; end; Begin readln(n,m); For i:=1 to m do begin readln(a[1,i],a[2,i],a[3,i]); a[2,i]:=a[2,i]*a[1,i]; if a[3,i]=0 then begin b[1,i,1]:=a[1,i]; b[1,i,2]:=a[2,i]; t[i]:=1; end else begin inc(t[a[3,i]]); b[t[a[3,i]],a[3,i],1]:=b[1,a[3,i],1]+a[1,i]; b[t[a[3,i]],a[3,i],2]:=b[1,a[3,i],2]+a[2,i]; end; end; For i:=1 to m do if t[i]=3 then begin inc(t[i]); b[4,i,1]:=b[2,i,1]+b[3,i,1]-b[1,i,1]; b[4,i,2]:=b[2,i,2]+b[3,i,2]-b[1,i,2]; end; For i:=1 to m do if t[i]<>0 then For j:=n downto b[1,i,1] do For k:=1 to t[i] do if j>=b[k,i,1] then f[j]:=max(f[j],f[j-b[k,i,1]]+b[k,i,2]); Writeln(f[n]); end. /************************************************************** Problem: 2265 User: admin Language: Pascal Result: Wrong Answer ****************************************************************/