求助,为什么用c++98能ac的代码,用c++11显示编译失败
查看原帖
求助,为什么用c++98能ac的代码,用c++11显示编译失败
762458
ln2____楼主2023/8/6 12:59
#include <bits/stdc++.h>
using namespace std;

const int N = 2e4 + 10;
typedef struct item ifo;
struct item
{
	int l;
	int r;
	int nl;
	int nr;
};
ifo get[N];	// 记录数据 
int zb[N * 2];		// 有序的位置记录 
int a[N * 2];	// 原始数组 
int s[N * 2];		// 前缀和 

void add(int l, int r)
{
	a[l]++;
	a[r]--;
}

int main()
{
	int n, i;
	cin >> n;
	
	for (i = 1; i <= n; i++)
	{
		int l, r;
		cin >> l >> r;
		get[i].l = l;
		get[i].r = r;
		
		zb[i] = l;
		zb[i + n] = r;
	}
	
	sort(zb + 1, zb + 1 + n * 2);
	int* k = unique(zb + 1, zb + 1 + n * 2);
	
	for (i = 1; i <= n; i++)
	{
		get[i].nl = lower_bound(zb + 1, k, get[i].l) - (zb + 1) + 1;
		get[i].nr = lower_bound(zb + 1, k, get[i].r) - (zb + 1) + 1;
	}
	
	for (i = 1; i <= n; i++)
	{
		add(get[i].nl + 1, get[i].nr + 1);
	}
	
	for (i = 1; i <= k - zb - 1; i++)
	{
		s[i] += s[i - 1] + a[i];
	}
	
	int l, r;
	long long cnt = 0;
	for (i = 1; i <= k - zb - 1; i++)
	{
		if (s[i] != 0 && s[i - 1] == 0)
		{
			l = i - 1;
		}
		if (s[i] != 0 && s[i + 1] == 0)
		{
			r = i;
			cnt += zb[r] - zb[l];
		}
//		cnt += zb[r] - zb[l];
	}
	
	cout << cnt;
	
	system("pause");
	
	return 0;
}
2023/8/6 12:59
加载中...