题意:
给出棋盘,和棋子。每一个棋子可以将他所在行,列笼罩在自己的攻击范围之下。询问每次放下棋子,在棋盘中有多少个位置是不在攻击之下的
思路:
记录列,行,每次维护行和列的减小
/*
10.14-10.25 1A
*/
#include<iostream>
#include<algorithm>
#define maxn 100010
using namespace std;
typedef long long ll;
ll m,n;
ll col[maxn],row[maxn];
int main()
{
ll sum=0,lie=0,hang=0;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
ll x, y;
cin>>x>>y;
if(!row[x])
{
sum+=n-lie;
row[x]=1;
hang++;
}
if(!col[y])
{
sum+=n-hang;
col[y]=1;
lie++;
}
cout<<n*n-sum<<" ";
}
}