80分离散化求助
查看原帖
80分离散化求助
740948
rb_tree楼主2025/1/31 20:33
#include<cstdio>
#include<algorithm>
#include<map>
#include<set>
#define int long long
using namespace std;
inline int read()
{
    int x=0,w=1;
    char ch=0;
    while(ch<'0'||ch>'9')
    {
        if(ch=='-') w=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9')
    {
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    return x*w;
}
inline void write(int x) 
{
    if(x<0) 
    { 
        x=-x;
        putchar('-');
    }
    if(x>=10) write(x/10);
    putchar((x%10)^48);
}
struct info
{
    int x,y;
}f[20005];
set<int> s;
map<int,int> m1,m2;
bool r[40005];
signed main()
{
    int n=read(),cnt=0,ans=0;
    for(int i=1;i<=n;i++)
    {
        int x=read(),y=read();
        f[i]={x,y};
        s.insert(x);
        s.insert(y);
    }
    for(auto i=s.begin();i!=s.end();i++) m1[++cnt]=*i,m2[*i]=cnt;
    m1[0]=0;
    for(int i=1;i<=n;i++)
    {
        r[m2[f[i].x]]=1;
        r[m2[f[i].y]]=1;
    }
    for(int i=1;i<=cnt;i++) ans+=r[i]*(m1[i]-m1[i-1]);
    write(ans);
    return 0;
}

评测记录

2025/1/31 20:33
加载中...