题解 P1003 【铺地毯】

· · 题解

一开始想开个二维数组去搞 然后看到数据范围...

算了一下如果开int要40000mb...肯定MLE的

然后想到通过地毯最左下角和最右上角去判断点在不在范围里

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<fstream>
#include<queue>
#include<stack>
#include<vector>
#define MAXN 10005

using std::cout;
using std::endl;
using std::cin;

int a[MAXN],b[MAXN],g[MAXN],k[MAXN];

inline int read_int()   //想写个读入优化然后交上去WA...换cin就AC了
{
    int ans=0;
    char temp;
    temp=getchar();
    bool flag=false;
    if(temp=='-')
    {
        flag=true;
        temp=getchar();
    }
    while(temp<='9'&&temp>='0')
    {
        ans=ans*10+temp-48;
        temp=getchar();
    }
    if(flag)
        ans=0-ans;
    return ans;
}
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>a[i]>>b[i]>>g[i]>>k[i];
    int x,y;
    cin>>x>>y;
    int up=-1;
    for(int i=0;i<n;i++)
        if(a[i]<=x&&a[i]+g[i]>=x&&b[i]<=y&&b[i]+k[i]>=y)    //判断在不在范围内
            up=i+1;
    cout<<up;
    return 0;
}