记录编号 351470 评测结果 AAAAAAAAAA
题目名称 输出全靠花 最终得分 100
用户昵称 GravatarBIRD 是否通过 通过
代码语言 C++ 运行时间 0.273 s
提交时间 2016-11-16 16:27:09 内存使用 16.93 MiB
显示代码纯文本
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cstring>
  5. #define long long lnt;
  6. using namespace std;
  7. const int up=40+5,maxN=1000+5;
  8. bool vis[maxN][maxN];
  9. int node[up][up][up][up],n;
  10. struct nodes
  11. {
  12. int x,y,z,w;
  13. bool operator < (const nodes& b) const
  14. {
  15. if(x!=b.x) return x<b.x;
  16. else if(y!=b.y) return y<b.y;
  17. else if(z!=b.z) return z<b.z;
  18. else if(w!=b.w) return w<b.w;
  19. }
  20. } no[maxN];
  21. int main()
  22. {
  23. freopen("xumingshi.in","r",stdin);
  24. freopen("xumingshi.out","w",stdout);
  25. int dx,dy,dz,dw,mx,y,z,w,sum,ans=2;
  26. scanf("%d",&n);
  27. for(int i=0;i<n;i++)
  28. {
  29. scanf("%d %d %d %d",&no[i].x,&no[i].y,&no[i].z,&no[i].w);
  30. no[i].x+=20;no[i].y+=20;no[i].z+=20;no[i].w+=20;
  31. }
  32. sort(no,no+n);
  33. for(int i=0;i<n;i++) node[no[i].x][no[i].y][no[i].z][no[i].w]=i;
  34. for(int i=0;i<n;i++)
  35. {
  36. for(int j=i+1;j<n;j++) if(!vis[i][j])
  37. {
  38. sum=2;
  39. dx=no[i].x-no[j].x;dy=no[i].y-no[j].y;
  40. dz=no[i].z-no[j].z;dw=no[i].w-no[j].w;
  41. if(dx==0)
  42. {
  43. if(dy) dx=dy;
  44. else if(dz) dx=dz;
  45. else dx=dw;
  46. }
  47. for(int k=no[j].x;k<=no[n-1].x;k++)
  48. {
  49. mx=k-no[j].x;
  50. if(mx*dy%dx!=0 || mx*dz%dx!=0 || mx*dw%dx!=0) continue;
  51. y=no[j].y+mx*dy/dx;
  52. z=no[j].z+mx*dz/dx;
  53. w=no[j].w+mx*dw/dx;
  54. //cout<<k<<' '<<y<<' '<<z<<' '<<w<<endl;
  55. if(y>40 || z>40 || w>40 || y<0 || z<0 || w<0) continue;
  56. if(node[k][y][z][w]!=j && node[k][y][z][w])
  57. {
  58. vis[j][node[k][y][z][w]]=1,sum++;
  59. //cout<<i<<' '<<j<<' '<<k<<' '<<y<<' '<<z<<' '<<w<<' '<<endl;
  60. }
  61. }
  62. ans=max(ans,sum);
  63. }
  64. }
  65. printf("%d\n",ans);
  66. return 0;
  67. }