USACO 2.1 Ordered Fractions(乱搞)

水题,尼玛,数组开大不给MLE,来了个看不懂的错误,不就多申请点内存了嘛。。。

 1 /*
 2  ID: cuizhe
 3  LANG: C++
 4  TASK: frac1
 5 */
 6 #include <cstdio>
 7 #include <cstring>
 8 #include <cmath>
 9 #include <algorithm>
10 using namespace std;
11 struct node
12 {
13     int a,b;
14     double x;
15 } p[160*160+1];
16 int cmp(const node &a,const node &b)
17 {
18     if(a.x < b.x)
19         return 1;
20     else
21         return 0;
22 }
23 int gcd(int a,int b)
24 {
25     return b == 0?a:gcd(b,a%b);
26 }
27 int main()
28 {
29     int i,j,n,num;
30     freopen("frac1.in","r",stdin);
31     freopen("frac1.out","w",stdout);
32     scanf("%d",&n);
33     p[0].a = 0;
34     p[0].b = 1;
35     p[0].x = 0;
36     p[1].a = 1;
37     p[1].b = 1;
38     p[1].x = 1;
39     num = 2;
40     for(i = 2; i <= n; i ++)
41     {
42         for(j = 1; j <= i-1; j ++)
43         {
44             if(gcd(i,j)==1)
45             {
46                 p[num].a = j;
47                 p[num].b = i;
48                 p[num].x = j*1.0/i;
49                 num ++;
50             }
51         }
52     }
53     sort(p,p+num,cmp);
54     for(i = 0; i <= num-1; i ++)
55         printf("%d/%d\n",p[i].a,p[i].b);
56     return 0;
57 }

 

posted @ 2012-11-05 20:35  Naix_x  阅读(160)  评论(0编辑  收藏  举报