【模拟】【NOIP2011提高组Day1】铺地毯
【样例输入输出1】
carpet.in | carpet.out |
3 1 0 2 3 0 2 3 3 2 1 3 3 2 2 |
3 |
【样例输入输出2】
carpet.in | carpet.out |
3 1 0 2 3 0 2 3 3 2 1 3 3 4 5 |
-1 |
很明显的水题啦,读数O(n),处理的时候循环一次O(n)就可得到答案,所以O(2n)就可以得到出解
判断一个点是否在矩形内如下图
所以这样代码就很好实现了
program carpet; var n,g,k:longint; x,y,xx,yy:array[0..100000+10] of longint; ans:longint; procedure init; begin assign(input,'carpet.in'); assign(output,'carpet.out'); reset(input); rewrite(output); end; procedure outit; begin close(input); close(output); halt; end; procedure readdata; var i,a,b:longint; begin read(n); for i:=1 to n do begin read(x[i],y[i],a,b); xx[i]:=x[i]+a; yy[i]:=y[i]+b; end; read(g,k); end; procedure main; var i:longint; begin ans:=-1; for i:=1 to n do begin if (g>=x[i])and(g<=xx[i])and(k>=y[i])and(k<=yy[i]) then ans:=i; end; writeln(ans); end; begin init; readdata; main; outit; end.
..... 转载请注明出处 ..... http://oijzh.cnblogs.com ..... by jiangzh