O(n)枚举加的牌,O(n)枚举对子的位置。然后O(n)模拟判断是否可行
判断时先组刻子再组对子
不知道N^3是怎么驶过去的。
PE一级预警。
var
n,m,i,x,fl:longint;
a,b:array [0..405] of longint;
function jud:boolean;
var i,j,fl:longint;
begin
b:=a;
for i:=1 to n do
if (a[i]>=2) then begin
a[i]:=a[i]-2; fl:=0;
for j:=1 to n+2 do begin
if (a[j]<0) then fl:=1;
a[j]:=a[j] mod 3;
a[j+1]:=a[j+1]-a[j];
a[j+2]:=a[j+2]-a[j];
end;
a:=b;
if (fl=0) then exit(true);
end;
exit(false);
end;
begin
read(n,m); fl:=0;
for i:=1 to 3*m+1 do begin read(x); inc(a[x]); end;
for i:=1 to n do
begin
inc(a[i]);
if jud then begin
if (fl=0) then fl:=1 else write(' ');
write(i);
end;
dec(a[i]);
end;
if (fl=0) then write('NO');
end.