[PA2014]Lustra

[PA2014]Lustra

题目大意:

有n个工厂参加竞标。每个工厂能生产长度在\([a_i,b_i]\)之间,宽度在\([c_i,d_i]\)之间的镜子,镜子不可以旋转。

问是否有某个工厂能生产出其它所有工厂能生产的镜子。

思路:

查询是否有某个工厂,\(a_i,c_i\)最小,\(b_i,d_i\)最大即可。

源代码:

#include<cstdio>
#include<cctype>
#include<algorithm>
inline int getint() {
	register char ch;
	while(!isdigit(ch=getchar()));
	register int x=ch^'0';
	while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
	return x;
}
const int N=1e5;
int a[N],b[N],c[N],d[N];
int main() {
	for(register int T=getint();T;T--) {
		const int n=getint();
		for(register int i=0;i<n;i++) {
			a[i]=getint();
			b[i]=getint();
			c[i]=getint();
			d[i]=getint();
		}
		const int mina=*std::min_element(&a[0],&a[n]);
		const int maxb=*std::max_element(&b[0],&b[n]);
		const int minc=*std::min_element(&c[0],&c[n]);
		const int maxd=*std::max_element(&d[0],&d[n]);
		for(register int i=0;i<n;i++) {
			bool flag=true;
			flag&=a[i]==mina;
			flag&=b[i]==maxb;
			flag&=c[i]==minc;
			flag&=d[i]==maxd;
			if(flag) {
				puts("TAK");
				goto Next;
			}
		}
		puts("NIE");
		Next:;
	}
	return 0;
}
posted @ 2018-12-29 18:09  skylee03  阅读(98)  评论(0编辑  收藏  举报