hdu4422The Little Girl who Picks Mushrooms

4422

小于等于3 的时候就是1024 4的时候 讨论 5的时候讨论 注意重量为0的情况

 1 #include <iostream>

 2 #include<cstdio>

 3 #include<cstring>

 4 #include<algorithm>

 5 #include<stdlib.h>

 6 #include<cmath>

 7 using namespace std;

 8 int a[10];

 9 int n;

10 int main()

11 {

12     int i,j,g;

13     while(scanf("%d",&n)!=EOF)

14     {

15         int sum=0;

16         for(i = 1; i <= n ; i++)

17         {

18             scanf("%d",&a[i]);

19             sum+=a[i];

20         }

21         if(n<=3)

22         {

23             printf("1024\n");

24             continue;

25         }

26         else

27         {

28             if(n==4)

29             {

30                 int flag = 0;

31                 for(i = 1; i <= n ; i++)

32                 {

33                     int s1 = 0;

34                     for(j = 1 ; j <= n ; j++)

35                     if(j!=i)

36                     s1+=a[j];

37                     if(s1%1024==0)

38                     {

39                         flag = 1;

40                         break;

41                     }

42                 }

43                 int maxz=0;

44                 for(i = 1; i <= n ; i++)

45                     for(j = 1; j <= n ; j++)

46                     {

47                         if(j!=i)

48                         {

49                             if(a[i]+a[j])

50                             {

51                                 if((a[i]+a[j])%1024==0)

52                                 maxz = 1024;

53                                 else

54                                 maxz = max(maxz,(a[i]+a[j])%1024);

55                             }

56                         }

57                     }

58                 if(flag)

59                 printf("1024\n");

60                 else

61                 printf("%d\n",maxz);

62             }

63             else

64             {

65                 int maxz = 0;

66                 for(g = 1; g <= n ; g++)

67                 {

68                     for(i = 1; i <= n ; i++)

69                     {

70                         if(i==g) continue;

71                         int s1 = 0;

72                         for(j = 1 ; j <= n ; j++)

73                         if(j!=i&&j!=g)

74                         s1+=a[j];

75                         if(s1%1024==0)

76                         {

77                             if((sum-s1)&&(sum-s1)%1024==0)

78                             maxz = 1024;

79                             else

80                             maxz = max(maxz,(sum-s1)%1024);

81                         }

82                     }

83                 }

84                 printf("%d\n",maxz);

85             }

86         }

87     }

88     return 0;

89 }
View Code

 

你可能感兴趣的:(oom)