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;..}.};.