题意:
有一个n*n的棋盘,接下来要放m个车,每个车的攻击范围是其所在的行和列。
每次没出一个车的坐标,在放上这个车之后,输出棋盘上还有多少个格子是不会被攻击的。
图示:
数据范围:n<=1e5
解法:
车的攻击范围是行和列,那么记录有多少个行,以及多少个列没有被攻击,乘起来就是答案了。
code:
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxm=1e6+5;
int r[maxm],c[maxm];
int n,m;
signed main(){
cin>>n>>m;
int rr=n,cc=n;
for(int i=1;i<=m;i++){
int x,y;cin>>x>>y;
if(!r[x])r[x]=1,rr--;
if(!c[y])c[y]=1,cc--;
cout<<rr*cc<<endl;
}
return 0;
}