BZOJ3715: [PA2014]Lustra

【传送门:BZOJ4034


简要题意:

  给出n个工厂,并给出每个工厂可以生产的镜子的最大、最小宽度和最大、最小高度

  判断是否存在一个工厂能够生产出其他工厂能够生产的镜子


题解:

  水题,直接排序,然后判断是否存在不合理情况就行了


参考代码:

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
struct node
{
    int w1,w2,h1,h2;
}a[110000];
bool cmp(node n1,node n2)
{
    if(n1.w1<n2.w1) return true;
    if(n1.w1>n2.w1) return false;
    if(n1.w2>n2.w2) return true;
    if(n1.w2<n2.w2) return false;
    if(n1.h1<n2.h1) return true;
    if(n1.h1>n2.h1) return false;
    if(n1.h2>n2.h2) return true;
    if(n1.h2<n2.h2) return false;
    return false;
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n;scanf("%d",&n);
        for(int i=1;i<=n;i++) scanf("%d%d%d%d",&a[i].w1,&a[i].w2,&a[i].h1,&a[i].h2);
        sort(a+1,a+n+1,cmp);
        bool bk=true;
        for(int i=2;i<=n;i++)
        {
            if(a[i].w1<a[1].w1||a[i].w2>a[1].w2||a[i].h1<a[1].h1||a[i].h2>a[1].h2)
            {
                bk=false;
                break;
            }
        }
        if(bk==true) printf("TAK\n");
        else printf("NIE\n");
    }
    return 0;
}

 

posted @ 2018-04-01 19:48  Star_Feel  阅读(157)  评论(0编辑  收藏  举报