cf1000C Covered Points Count (差分+map)

时间:2023-03-09 02:27:56
cf1000C Covered Points Count (差分+map)

考虑如果数字范围没有这么大的话,直接做一个差分数组就可以了

但现在变大了 所以要用一个map来维护

 #include<bits/stdc++.h>
#define pa pair<int,int>
#define CLR(a,x) memset(a,x,sizeof(a))
using namespace std;
typedef long long ll;
const int maxn=2e5+; inline ll rd(){
ll x=;char c=getchar();int neg=;
while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-'',c=getchar();
return x*neg;
} map<ll,int> cnt;
ll ans[maxn]; int main(){
int i;
int N=rd();
for(i=;i<=N;i++){
ll l=rd(),r=rd();
cnt[l]++,cnt[r+]--;
}
ll j=,k=;
for(map<ll,int>::iterator it=cnt.begin();it!=cnt.end();it++){
ans[k]+=(it->first-j);
k+=it->second;j=it->first;
}
for(i=;i<=N;i++){
printf("%I64d ",ans[i]);
}
return ;
}