题目描述
N×N 的国际象棋棋盘上有KK 个车,第ii个车位于第R_i行,第C_i列。求至少被一个车攻击的格子数量。
车可以攻击所有同一行或者同一列的地方。
输入格式
第1 行,2 个整数N,K。
接下来K 行,每行2 个整数R_i,C_i
输出格式
1 个整数,表示被攻击的格子数量。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=2e6+10;
#define int long long
struct node{
int x,y;
}e[N];
int A[N],B[N];
signed main(){
int n,k;
cin>>n>>k;
for(int i=1;i<=k;i++){
scanf("%lld%lld",&e[i].x,&e[i].y);
A[i]=e[i].x;
B[i]=e[i].y;
}
sort(A+1,A+1+k);
sort(B+1,B+1+k);
int x=unique(A+1,A+1+k)-A-1;
int y=unique(B+1,B+1+k)-B-1;
cout<<x*n+y*n-x*y;
}