题解 | #交叉线#

交叉线

https://www.nowcoder.com/practice/54fe00d9b0e14688bd3d31ad539b929c

#include <bits/stdc++.h>
#include <sys/types.h>
using namespace std;

typedef pair<long long int, long long int> line;
#define x first
#define y second
line arr[1005];

bool cmp( line a, line b){
    if( a.x != b.x) return a.x < b.x;
    else return a.y <= b.y;
}
int main() {
    int T;
    cin >> T;
    while(T--){
        int pre, nex;
        int n;
        cin >> n;
        int cnt = 0;
        for( int i = 0; i < n; i++){
            if( !i ){
                cin >> pre;
            }
            else{
                cin >> nex;
                arr[cnt].x = pre;
                arr[cnt].y = nex;
                if( arr[cnt].x > arr[cnt].y )   swap( arr[cnt].x, arr[cnt].y);
                cnt++;
                pre = nex;
            }
        }
        sort( arr, arr + cnt, cmp);
        // for( int i = 0; i < n-1; i++){
        //     cout << arr[i].x << ' ' <<arr[i].y <<endl;
        // }
        bool flag = false;
        for(int i = 0; i < n-1; i++){
            for( int j = i + 1; j < n-1; j++){
                if( arr[i].x < arr[j].x && arr[i].y < arr[j].y && arr[i].y > arr[j].x){
                    cout << 'y' << endl;
                    // cout << arr[i].x << ' ' << arr[i].y <<endl;
                    // cout << arr[j].x <<' ' <<arr[j].y <<endl;
                    flag = true;
                    break;
                } 
            }
            if( flag ) break;
        }
        if(!flag)
            cout << 'n' << endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务