Warning: session_start(): open(/tmp/sess_c01b695871c9805769f13cd39c02350e, O_RDWR) failed: No space left on device (28) in /data/wiki/inc/init.php on line 239
Warning: session_start(): Failed to read session data: files (path: ) in /data/wiki/inc/init.php on line 239
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/auth.php on line 430
Writing /data/wiki/data/cache/8/8fe637ac40e9dfa91f93fbcd08d065e4.captchaip failed
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/Action/Export.php on line 103
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/Action/Export.php on line 103
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/Action/Export.php on line 103
[[http://poj.org/problem?id=3034|POJ 3034]]
#include
#include
#include
#include
#include
using namespace std;
int read()
{
int x=0,f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
}
int n,d,m,f[11][40][40];
bool mp[11][40][40];
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int main()
{
while(~scanf("%d%d%d",&n,&d,&m))
{
if(!n&&!d&&!m)break;
int ans=0;
memset(mp,0,sizeof(mp));
memset(f,0,sizeof(f));
int maxt=0;
for(int i=1;i<=m;i++)
{
int x,y,t;
x=read(),y=read(),t=read();
mp[t][x+6][y+6]=1;
maxt=max(maxt,t);
}
for(int i=1;i<=maxt;i++)
{
for(int x0=-6;x0d*d)continue;
int res=f[i-1][x0+6][y0+6];
if(x1==x0&&y1==y0)res+=mp[i][x0+6][y0+6];
else
{
int g=gcd(abs(x1-x0),abs(y1-y0));
int x=x0,y=y0;
int stx=(x1-x0)/g,sty=(y1-y0)/g;
while(x!=x1||y!=y1)
{
if(mp[i][x+6][y+6])res++;
x+=stx,y+=sty;
}
if(mp[i][x+6][y+6])res++;
}
f[i][x1+6][y1+6]=max(res,f[i][x1+6][y1+6]);
ans=max(ans,f[i][x1+6][y1+6]);
}
}
}
}
}
printf("%d\n",ans);
}
return 0;
}