Hex Artifact Content
Not logged in

Artifact 070f78c25ba825a7f60c9bc31ddeab58e84399c2:


0000: 23 69 6e 63 6c 75 64 65 20 3c 76 65 63 74 6f 72  #include <vector
0010: 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 6e 75 6d 65  >.#include <nume
0020: 72 69 63 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 61  ric>.#include <a
0030: 6c 67 6f 72 69 74 68 6d 3e 0a 23 69 6e 63 6c 75  lgorithm>.#inclu
0040: 64 65 20 3c 75 74 69 6c 69 74 79 3e 0a 75 73 69  de <utility>.usi
0050: 6e 67 20 6e 61 6d 65 73 70 61 63 65 20 73 74 64  ng namespace std
0060: 3b 0a 0a 73 74 72 75 63 74 20 42 6f 6e 75 73 65  ;..struct Bonuse
0070: 73 0a 7b 0a 09 76 65 63 74 6f 72 3c 69 6e 74 3e  s.{..vector<int>
0080: 20 67 65 74 44 69 76 69 73 69 6f 6e 28 76 65 63   getDivision(vec
0090: 74 6f 72 3c 69 6e 74 3e 20 70 6f 69 6e 74 73 29  tor<int> points)
00a0: 0a 09 7b 0a 09 09 69 6e 74 20 73 75 6d 20 3d 20  ..{...int sum = 
00b0: 61 63 63 75 6d 75 6c 61 74 65 28 70 6f 69 6e 74  accumulate(point
00c0: 73 2e 62 65 67 69 6e 28 29 2c 20 70 6f 69 6e 74  s.begin(), point
00d0: 73 2e 65 6e 64 28 29 2c 20 30 29 3b 0a 0a 09 09  s.end(), 0);....
00e0: 69 6e 74 20 6c 65 66 74 20 3d 20 31 30 30 3b 0a  int left = 100;.
00f0: 09 09 76 65 63 74 6f 72 3c 69 6e 74 3e 20 61 6e  ..vector<int> an
0100: 73 28 70 6f 69 6e 74 73 2e 73 69 7a 65 28 29 29  s(points.size())
0110: 3b 0a 09 09 66 6f 72 28 69 6e 74 20 69 3d 30 3b  ;...for(int i=0;
0120: 20 69 3c 70 6f 69 6e 74 73 2e 73 69 7a 65 28 29   i<points.size()
0130: 3b 20 2b 2b 69 29 0a 09 09 09 6c 65 66 74 20 2d  ; ++i)....left -
0140: 3d 20 28 61 6e 73 5b 69 5d 20 3d 20 70 6f 69 6e  = (ans[i] = poin
0150: 74 73 5b 69 5d 2a 31 30 30 2f 73 75 6d 29 3b 0a  ts[i]*100/sum);.
0160: 0a 09 09 76 65 63 74 6f 72 3c 20 70 61 69 72 3c  ...vector< pair<
0170: 69 6e 74 2c 69 6e 74 3e 20 3e 20 70 6f 69 64 28  int,int> > poid(
0180: 70 6f 69 6e 74 73 2e 73 69 7a 65 28 29 29 3b 0a  points.size());.
0190: 09 09 66 6f 72 28 69 6e 74 20 69 3d 30 3b 20 69  ..for(int i=0; i
01a0: 3c 70 6f 69 6e 74 73 2e 73 69 7a 65 28 29 3b 20  <points.size(); 
01b0: 2b 2b 69 29 0a 09 09 09 70 6f 69 64 5b 69 5d 20  ++i)....poid[i] 
01c0: 3d 20 6d 61 6b 65 5f 70 61 69 72 28 20 2d 70 6f  = make_pair( -po
01d0: 69 6e 74 73 5b 69 5d 2c 20 69 20 29 3b 0a 09 09  ints[i], i );...
01e0: 73 6f 72 74 28 70 6f 69 64 2e 62 65 67 69 6e 28  sort(poid.begin(
01f0: 29 2c 20 70 6f 69 64 2e 65 6e 64 28 29 29 3b 0a  ), poid.end());.
0200: 0a 09 09 66 6f 72 28 69 6e 74 20 69 3d 30 3b 20  ...for(int i=0; 
0210: 6c 65 66 74 2d 2d 3b 20 2b 2b 69 29 0a 09 09 09  left--; ++i)....
0220: 61 6e 73 5b 70 6f 69 64 5b 69 5d 2e 73 65 63 6f  ans[poid[i].seco
0230: 6e 64 5d 2b 2b 3b 0a 09 09 72 65 74 75 72 6e 20  nd]++;...return 
0240: 61 6e 73 3b 0a 09 7d 0a 7d 3b 0a                 ans;..}.};.