HDU 4442 Physical Examination(2012年金华赛区现场赛A题)

对于两组数据 x1 y1和x2 y2根据题目可以得出如果第一组数据排在第二组数据前面,那么x1*y2<x2*y1。所以只要排下序就可以了。

代码:

 

 1  #include <algorithm>

 2  #include <iostream>

 3  #include <cstring>

 4  #include <cstdio>

 5  #define LL long long

 6  using namespace std;

 7  struct node

 8  {

 9      LL x;

10      LL y;

11  }p[100010];

12  const LL mod=365*24*60*60;

13  bool comp(struct node a,struct node b)

14  {

15      return a.x*b.y<b.x*a.y;

16  }

17  int main()

18  {

19      int n;

20      while(~scanf("%d",&n))

21      {

22          LL s=0;

23          if(!n)

24              break;

25          for(int i=0;i<n;i++)

26          {

27              scanf("%lld%lld",&p[i].x,&p[i].y);

28          }

29          sort(p,p+n,comp);

30          for(int i=0;i<n;i++)

31          {

32              s=(s+s*p[i].y+p[i].x)%mod;

33          }

34          printf("%lld\n",s);

35      }

36      return 0;

37  }

 

 

 

你可能感兴趣的:(Mina)