感觉题非常好,虽然我没做出来。
我们假想点可以移动到左边,统计没有重叠的l,h.
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e6+10;
int k;
ll sum,x[maxn],y[maxn],l,h,n;
int main(){
scanf("%lld%d",&n,&k);
for(int i=1;i<=k;i++)
scanf("%lld%lld",&x[i],&y[i]);
sort(x+1,x+1+k);
sort(y+1,y+1+k);
for(int i=1;i<=k;i++){
if(x[i]!=x[i+1])h++;
if(y[i]!=y[i+1])l++;
}
sum=n*n-(n-h)*(n-l);
printf("%lld\n",sum);
}