| 
 | 
back to boardI can't understand what's wrong with my solution... but it gives WA 1:( could somebody find error in my source code or just offer some effective tests where my program fails   here is solution #include <cstdio> #include <algorithm> using namespace std; #define MAX_SIZE 2005 struct point {     int x,         y,         z;     point(){};     point(int _x,int _y,int _z):x(_x),y(_y),z(_z){}; } mas[MAX_SIZE],tmp[MAX_SIZE]; bool operator==(point & a,point & b) {     return ((a.x==b.x)&&(a.y==b.y)&&(a.z==b.z)); } int n; int gcd(int a,int b) {     if (b==0)         return a;     else gcd(b,a%b); } void input() {     scanf("%d",&n);     for(int i=0;i<n;i++)         scanf("%d%d%d",&mas[i].x,&mas[i].y,&mas[i].z); } bool cmp(point & a,point & b) {     if (a.x<b.x)         return true;     else if (a.x==b.x)         if (a.y<b.y)             return true;         else if (a.y==b.y)             return (a.z<b.z);     return false; } point GetPoint(int i,int j) {     point first = mas[i];     point second = mas[j];     first.x = second.x - first.x;     first.y = second.y - first.y;     first.z = second.z - first.z;     int GCD = gcd(gcd(first.x,first.y),first.z);     if (GCD!=0)     {         first.x /= GCD;         first.y /= GCD;         first.z /= GCD;     }     return first; }   int Calc(int yk) {     if (!yk)         return 0;     int maxAmount = 0;     int cur = 1;     for(int i=1;i<yk;i++)         if (tmp[i]==tmp[i-1])             cur++;         else         {             if (cur>maxAmount)                 maxAmount = cur;             cur = 1;         }     if (cur>maxAmount)         maxAmount = cur;     return maxAmount; } void solve() {     point base;     int maxAmount = -1;     for(int i=0;i<n;i++)     {         int yk = 0;         for(int j=0;j<n;j++)             if (i!=j)                 tmp[yk++] = GetPoint(i,j);         sort(tmp,tmp+yk,cmp);         int cur = Calc(yk) + 1;         if (cur>maxAmount)             maxAmount = cur;     }     printf("%d",maxAmount); } int main() { #ifndef ONLINE_JUDGE     freopen("input.txt","rt",stdin);     freopen("output.txt","wt",stdout); #endif     input();     solve();     return 0; } Re: I can't understand what's wrong with my solution... now it's tle 18 i just substituted this lines int gcd(int a,int b) { if (b==0) return a; else gcd(b,a%b); } to int gcd(int a,int b) { if (b==0) return a; else return gcd(b,a%b); } Re: I can't understand what's wrong with my solution... AC now :)  |  
  | 
|