1 条题解

  • 0
    @ 2024-12-24 9:59:31

    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));
    }
    
    • 1

    信息

    ID
    1683
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者