⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3190.txt

📁 北大ACM题目例程 详细的解答过程 程序实现 算法分析
💻 TXT
字号:
Source

Problem Id:3190  User Id:fzk 
Memory:1532K  Time:154MS
Language:C++  Result:Accepted

Source 

#include <stdio.h>
#include <algorithm>
#include <string>
#include <string.h>

using namespace std;

int empty[50000];
int use[50000];
int a[50000], b[50000];

typedef pair<int,int> p_i;
p_i p[100000];

int main( ) {
	int i, n, m, ans=0;
	scanf( "%d", &n );
	for( i=0; i<n; i++ ) {
		scanf( "%d%d", a+i, b+i );
		p[i*2].first = a[i];
		p[i*2].second = (1<<16) | i;
		p[i*2+1].first = b[i]+1;
		p[i*2+1].second = i;
	}

	sort( p, p+2*n );
	m = 0;

	for( i=0; i<2*n; i++ ) {
		if( p[i].second < (1<<16) )
			empty[m++] = use[ p[i].second ];
		else {
			if( m == 0 )
				use[ p[i].second - (1<<16) ] = ++ans;
			else
				use[ p[i].second - (1<<16) ] = empty[--m];
		}
	}

	printf( "%d\n", ans );
	for( i=0; i<n; i++ )
		printf( "%d\n", use[i] );

	return 0;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -