洛谷 P1003 铺地毯
var a1:array[0..10002,1..4] of longint; a,b,g,k,i,x,y,n,ans:longint; begin readln(n); for i:=1 to n do begin readln(a,b,g,k); a1[i,1]:=a;a1[i,2]:=b;a1[i,3]:=g+a;a1[i,4]:=k+b; end; readln(x,y); for i:=n downto 1 do if (a1[i,1]<=x) and (a1[i,3]>=x) and (a1[i,2]<=y) and (a1[i,4]>=y) then begin writeln(i);exit;end; writeln(-1); end.
因为只需要找覆盖在一个点最上面的地毯,所以可以直接从最后一张地毯开始找。找到的第一块在该点之上地毯显然是最后放上去的在该点之上的地毯,也即覆盖在该点最上面的地毯。