注文番号「デイリークエスチョン」

注文番号-タイトル-Daimayuanオンラインジャッジ




 

#include <bits/stdc++.h>
using namespace std;
int n;
set < pair<int, int> > c;

inline void insert(int l,int r) {
	if(l > r)
		return;
	c.insert(make_pair(r, l));
}


int main() {
	scanf("%d",&n);
	//首先给它传入一个区间
	//传的1-2e9
	c.insert(make_pair(2e9, 1));
	//每个去填
	for(int i=1;i<=n;i++)
	{
		int x;scanf("%d",&x);
//		0-x
		auto itr = c.lower_bound(make_pair(x, 0));
//		如果说在范围里,就分两段
		if(itr->second <= x) {
			printf("%d ",x);
//			first指的是左端点,second指的是右端点
			insert(itr->second,x-1);
			insert(x+1,itr->first);
			c.erase(itr);
		} else {//否则在范围外,也就是走过了,直接找右端点(前面走完了这里是最小de)
			printf("%d ",itr->second);
			insert(itr->second+1,itr->first);
			c.erase(itr);
		}
	}
	return 0;
}

おすすめ

転載: blog.csdn.net/weixin_60789461/article/details/123261390