您的位置:首页 > 其它

【set】bzoj3715 [PA2014]Lustra

2014-10-29 19:15 411 查看
对每种属性开一个set,只要某个厂家符合该属性的最值,就加进set,最后判断是否有某个厂家在4个set里都存在即可。

#include<cstdio>
#include<set>
using namespace std;
int T,a[4][100001],EX[4],n;
set<int>S[4];
typedef set<int>::iterator ITER;
bool check(const int &x)
{
for(int i=1;i<4;i++)
if(S[i].find(x)==S[i].end())
return 0;
return 1;
}
int main()
{
scanf("%d",&T);
for(;T>0;T--)
{
EX[0]=EX[2]=2147483647;
EX[1]=EX[3]=-2147483647;
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=0;j<4;j++)
scanf("%d",&a[j][i]);
for(int i=1;i<=n;i++) EX[0]=min(EX[0],a[0][i]);
for(int i=1;i<=n;i++) EX[2]=min(EX[2],a[2][i]);
for(int i=1;i<=n;i++) EX[1]=max(EX[1],a[1][i]);
for(int i=1;i<=n;i++) EX[3]=max(EX[3],a[3][i]);
for(int i=0;i<4;i++)
for(int j=1;j<=n;j++)
if(a[i][j]==EX[i]) S[i].insert(j);
for(ITER it=S[0].begin();it!=S[0].end();it++)
if(check(*it))
{
puts("TAK");
goto OUT;
}
puts("NIE");
OUT:for(int i=0;i<4;i++) S[i].clear();
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: