携程笔试题:订单查询

发布于:2021-06-18 07:52:40



※注意:订单号升序输出




测试用例:


输入:


typedef struct TYPES {
?? ?int id;
?? ?long t1, t2;
}TYPES;
int bsearch( vector arr, ?int len, ?int data)
{
?? ?int l = 0;
?? ?int r = len - 1;
?? ?int mid = 0;
?? ?while (l <= r)
?? ?{
?? ??? ?mid = l + (r - l) / 2;
?? ??? ?if (arr[mid].t1 > data&&arr[mid].t1 > data)
?? ??? ??? ?r = mid - 1;
?? ??? ?else if (arr[mid].t1 < data&&arr[mid].t2 < data)
?? ??? ??? ?l = mid + 1;
?? ??? ?else
?? ??? ??? ?return mid;
?? ?}
?? ?return -1;
}
/*
int main()
{
?? ?int num = 0;
?? ?long data;
?? ?vector res;
?? ?vector dd;
?? ?cin >> num;
?? ?cin >> data;
?? ?for (int i = 0; i < num; i++)
?? ?{
?? ??? ?TYPES re;
?? ??? ?cin >> re.id;
?? ??? ?cin >> re.t1;
?? ??? ?cin >> re.t2;
?? ??? ?res.push_back(re);
?? ?}

?? ?int tem= bsearch(res, num, data);
?? ?if (tem == -1)
?? ?
?? ?{
?? ??? ?cout << "null";
?? ??? ?return 0;
?? ?}
?? ??? ?
?? ?else
?? ?{
?? ??? ?int left = tem;
?? ??? ?int right = tem+1;
?? ??? ?while(left>-1)
?? ??? ?{
?? ??? ??? ?if (res[left].t1 < data&&res[left].t2 > data)
?? ??? ??? ??? ?dd.push_back(res[left].id);
?? ??? ??? ?left--;
?? ??? ?}
?? ??? ?for (int i = dd.size() - 1; i > -1; i--)
?? ??? ??? ?cout << dd[i] << endl;
?? ??? ?while (right?? ??? ?{
?? ??? ??? ?if (res[right].t1 < data&&res[right].t2 > data)
?? ??? ??? ??? ?cout << res[right].id << endl;
?? ??? ??? ?left++;
?? ??? ?}
?? ?}
?? ?return 0;
}

10
20180602
1001?20180103?20180105
1002?20180202?20180203
1003?20180304?20180306
1004?20180401?20180408
1005?20180501?20180504
1006?20180601?20180604
1007?20180705?20180706
1008?20180801?20180804
1009?20180903?20180903
1010?20181003?20181003
输出:
1006
输入:
5
20170103
1013?20180103?20180105
1022?20180102?20180103
1103?20180104?20180106
1034?20180101?20180102
1105?20180201?20180204
输出:
null

相关推荐

最新更新

猜你喜欢