http://codeforces.com/problemset/problem/203/B
题目的意思就是问你他最少涂几次能够使纸上有至少有一个3*3的黑色正方形
第一个样例
4 11
1 1
1 2
1 3
2 2
2 3
1 4
2 4
3 4
3 2
3 3//当涂完这个格子以后纸上就出现了一个3*3的黑色正方形,所以结果为10
4 1
做法:
每输入一个点将以这个点为左上角的3*3的正方形里包含的小格子标记,当这个格子被标记了九次,说明出现了以这个点为右下角的3*3的正方形,
#include<iostream>
using namespace std;
int n,m,x,y,a[1005][1005]= {0},i,l,r;
int main()
{
cin>>n>>m;
int ans=-1;
int flag=0;
for(i=1; i<=m; i++)
{
cin>>x>>y;
if(flag==0)
for(l=x; l<x+3; l++)///将以这个点为左上角的3*3的正方形里包含的小格子标记
{
for(r=y; r<y+3; r++)
{
a[l][r]++;
if(a[l][r]==9)///当这个格子被标记了九次,说明出现了以这个点为右下角的3*3的正方形
{
ans=i;
flag=1;
break;
}
}
if(flag)
break;
}
}
cout<<ans;
return 0;
}