#include #include #include #include #include #include using namespace std; typedef long long ll; const int maxn = 105; const int forever = -1; const int never = -2; struct point { ll x, y; } p[maxn], v[maxn]; map Map; ll cti[maxn][maxn]; void initial(int n) { int i, j, t; for(i=0; i0 && t!=cti[i][j]) { tmp = ++Map[t]; res = max(tmp, res); } } } else { ll d = b*b-4*a*c; ll t1, t2; if(d<0) continue; else { ll sqd = sqrt(d+0.0); if(sqd*sqd == d) { t1= -b+sqd; if(t1%(2*a)==0) { t1/=(2*a); if(t1>0 && t1!=cti[i][j]) { tmp = ++Map[t1]; res = max(tmp, res); } } if(sqd!=0) { t2= -b-sqd; if(t2%(2*a)==0) { t2/=(2*a); if(t2>0 && t2!=cti[i][j]) { tmp = ++Map[t2]; res = max(tmp, res); } } } } } } } ans = max(res+2+cnt, ans); if(cti[i][j]!=never && cti[i][j]!=0) { res=0; for(k=0; k