rt,本人喜欢乱搞,所以打了一个乱搞做法,就是按总和从小到大排序,然后从1开始扫一部分,从r-1开始往前扫一部分,但是不知道为什么,加上注释的部分就会TLE47个点。
#include <bits/stdc++.h>
#define int long long
#define N 1000100
using namespace std;
int n, ff;
struct sb{int a[4], sum = 0;}e[N];
inline int cmp(sb a, sb b) {return a.sum < b.sum;}
signed main()
{
cin >> n;
for(int i = 1; i <= n; i ++)
{
cin >> e[i].a[1] >> e[i].a[2] >> e[i].a[3];
e[i].sum = e[i].a[1] + e[i].a[2] + e[i].a[3];
sort(e[i].a + 1, e[i].a + 4);
}
sort(e + 1, e + n + 1, cmp);
int l = 1, r = n;
while(1)
{
while(l < r - n / 100 && l)
{
if(e[l].a[1] < e[r].a[1] && e[l].a[2] < e[r].a[2] && e[l].a[3] < e[r].a[3])
{
cout << "Yes" << endl;
// cout << l << " " << r << endl;
return 0;
}
else l ++;
}
// l = r - 1;
// while(l > n / 100 && l)
// {
// if(e[l].a[1] < e[r].a[1] && e[l].a[2] < e[r].a[2] && e[l].a[3] < e[r].a[3])
// {
// cout << "Yes" << endl;
//// cout << l << " " << r << endl;
// return 0;
// }
// else l --;
// }
r --;
if(r < n / 100) break;
}
cout << "No" << endl;
return 0;
}