1 solutions

  • 0
    @ 2025-11-5 15:30:24

    C :

    #include <stdio.h>
    int main()
    {
        int a[10000][4];
        int i,n,x,y;
        scanf("%d",&n);
        for (i=0;i<n;i++) scanf("%d%d%d%d",&a[i][0],&a[i][1],&a[i][2],&a[i][3]);
        scanf("%d%d",&x,&y);
        for (i=n-1;i>=0;i--)
            if ((a[i][0]<=x)&&(a[i][1]<=y)&&(a[i][0]+a[i][2]>=x)&&(a[i][1]+a[i][3]>=y))//找到最后一个覆盖在该点上的地毯
            {
               printf("%d",i+1);
               return 0;
            }
        printf("-1");
        return 0;
    }
    

    C++ :

    #include <cstdio>
    #include <cstdlib>
    #include <iostream>
    using namespace std;
    struct p{
        int a,b,g,k;
    }po[10001];
    int f(int x,int y,int n){
        int i=n-1;
        for(;i>=0;i--){
            if(x>=po[i].a&&y>=po[i].b
               &&x<=po[i].a+po[i].g&&y<=po[i].b+po[i].k)
                return i+1;
        }
        return -1;
    }
    int main(){
        int n;
        int a,b,g,k;
        int x,y;
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%d%d%d%d",&po[i].a,&po[i].b,&po[i].g,&po[i].k);
        }
        scanf("%d%d",&x,&y);
        printf("%d\n",f(x,y,n));
    }
    

    Pascal :

    program carpet;
    var
      n,x,y,i:longint;
      a,b,g,k:array[0..200001]of longint;
    begin
      readln(n);
      for i:=1 to n do
        readln(a[i],b[i],g[i],k[i]);
      readln(x,y);
      for i:=n downto 1 do
      begin
        if (x>=a[i])and(y>=b[i])and(x<=a[i]+g[i])and(y<=b[i]+k[i]) then
        begin
          writeln(i);
          exit;
        end;
      end;
      writeln('-1');
    end.
    
    

    Java :

    import java.util.*;
    
    public class Main {
    	public static int n, x, y;
    	public static int[][] arrays;
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner sc = new Scanner(System.in);
    		n = sc.nextInt();
    		arrays = new int[n][4];
    		for (int i = 0; i < n; i++) {
    			arrays[i][0] = sc.nextInt();
    			arrays[i][1] = sc.nextInt();
    			arrays[i][2] = sc.nextInt();
    			arrays[i][3] = sc.nextInt();
    		}
    		x = sc.nextInt();
    		y = sc.nextInt();
    		for (int i = n; i >= 1; i--) {// 逐一读取每一行的a,b,c,d
    			// 如果有覆盖的则打印最高层地毯
    			if (x >= arrays[i - 1][0]
    					&& x <= arrays[i - 1][0] + arrays[i - 1][2]
    					&& y >= arrays[i - 1][1]
    					&& y <= arrays[i - 1][1] + arrays[i - 1][3]) {
    				System.out.println(i);
    				return;
    			}
    		}
    		System.out.println(-1);
    
    	}
    
    }
    
    
    • 1

    Information

    ID
    16866
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By