题解 | #交叉线#

交叉线

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")

全部评论

相关推荐

袋鼠喜欢睡觉:接好运,三面完等待中
投递京东等公司10个岗位
点赞 评论 收藏
分享
珩珺:那些经历都太大太空了,实习的情况不了解,大创项目连名字、背景、目的及意义都没体现出来;地摊经济更是看完连卖的什么产品都不知道,项目成果直接写营收多少都更直观真实一点;后面那个校文体部的更是工作内容是组织活动整理流程,成果变成了当志愿者,而且你们学校本科学生会大一入学就直接当部长吗,志愿里面还提到了疫情防控,全面解封是22年12月的事情,可能时间上也有冲突。可能你花了钱人家就用AI给你随便写了点内容改了一下,没什么体现个性化的点
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务