有1到n个数字,然后m个查询,构造一个序列,使得查询后的值最大化。
因为只输出一次,不需要关心到底是怎么构造的,考虑,被查询到的数字次数越多,那么就让他的值越大,则,差分前缀和求出每个数字被查询的次数,然后排序,出现次数最小的对应1,最大的对应n即可

#include <iostream>
#include <cstdio>
#include <algorithm>
#define ll long long
using namespace std;
const int N = 2e5 + 5;
int d[N];
int main(){
    int n, m;
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= m; i++){
        int l, r;
        scanf("%d%d", &l, &r);
        d[l] ++ ,d[r + 1]--;
    }
    for(int i = 1; i <= n; i++){
        d[i] += d[i - 1];
    }
    sort(d + 1, d + n + 1);
    ll ans = 0;
    for(int i = 1; i <= n; i++)
        ans += 1ll * d[i] * i;
    printf("%lld\n", ans);
    return 0;
}