CSES - IZhO 2018, day 1 - Results
Submission details
Task:Gift
Sender:Olli
Submission time:2019-02-16 16:51:15 +0200
Language:C++
Status:READY
Result:49
Feedback
groupverdictscore
#1ACCEPTED7
#2ACCEPTED11
#3ACCEPTED12
#4ACCEPTED19
#50
Test results
testverdicttimegroup
#1ACCEPTED0.05 s1, 2, 3, 5details
#2ACCEPTED0.06 s1, 2, 3, 5details
#3ACCEPTED0.06 s1, 2, 3, 5details
#4ACCEPTED0.06 s1, 2, 3, 5details
#5ACCEPTED0.05 s1, 2, 3, 5details
#6ACCEPTED0.06 s1, 2, 3, 5details
#7ACCEPTED0.06 s1, 2, 3, 5details
#8ACCEPTED0.06 s2, 3, 5details
#9ACCEPTED0.05 s2, 3, 5details
#10ACCEPTED0.06 s2, 3, 5details
#11ACCEPTED0.09 s2, 3, 5details
#12ACCEPTED0.09 s2, 3, 5details
#13ACCEPTED0.06 s2, 3, 5details
#14ACCEPTED0.06 s2, 3, 5details
#15ACCEPTED0.05 s2, 3, 5details
#16ACCEPTED0.06 s2, 3, 5details
#17ACCEPTED0.07 s3, 5details
#18ACCEPTED0.05 s3, 5details
#19ACCEPTED0.06 s3, 5details
#20ACCEPTED0.06 s3, 5details
#21ACCEPTED0.06 s3, 5details
#22ACCEPTED0.05 s3, 5details
#23ACCEPTED1.36 s4, 5details
#24ACCEPTED0.83 s4, 5details
#25ACCEPTED0.48 s4, 5details
#26ACCEPTED0.32 s4, 5details
#27ACCEPTED0.07 s4, 5details
#28ACCEPTED0.22 s4, 5details
#29ACCEPTED0.10 s4, 5details
#30ACCEPTED0.08 s4, 5details
#31ACCEPTED0.05 s4, 5details
#32ACCEPTED0.06 s4, 5details
#33ACCEPTED0.06 s4, 5details
#34ACCEPTED0.08 s5details
#35ACCEPTED0.09 s5details
#36ACCEPTED0.06 s5details
#37ACCEPTED0.06 s4, 5details
#38ACCEPTED0.15 s5details
#39ACCEPTED0.16 s5details
#40ACCEPTED0.05 s5details
#41ACCEPTED0.06 s5details
#42ACCEPTED0.06 s5details
#431.24 s5details
#44--5details
#451.60 s5details
#46ACCEPTED1.05 s5details
#47ACCEPTED0.06 s5details
#480.68 s5details
#490.49 s5details
#50ACCEPTED0.11 s5details
#51ACCEPTED0.09 s5details
#52ACCEPTED0.14 s5details
#53ACCEPTED0.29 s5details
#54ACCEPTED0.07 s5details
#55ACCEPTED0.27 s5details
#56ACCEPTED0.07 s5details

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:177:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j = 0; j < mov[i].size(); ++j) {
                  ~~^~~~~~~~~~~~~~~

Code

#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <unordered_map>
#include <math.h>

using namespace std;

const int N = 1e6 + 5;
const int M = 131072;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

#define F first
#define S second

ll t[N];

set<pll> s;

vector<ll> mov[2*N];


int main() {
/*	set<int> se;
	for(int i = 1; i <= 10; ++i) {
		se.insert(i);
	}
	int cou = 3;
	int ii = 0;
	set<int>::iterator iter = se.begin();
	while(ii < cou) {
		se.erase(iter);
		cout << *iter << "\n";
		se.insert((*iter) - 3);
		++ii;
		++iter;
	}

	for(iter = se.begin(); iter != se.end(); ++iter) {
		cout << *iter << " ";
	}
	cout << "\n";
	return 0;
*/	

	cin.tie(0);
	iostream::sync_with_stdio(false);
	int n, k;
	cin >> n >> k;
	ll sum = 0;
	for(int i = 1; i <= n; ++i) {
		ll a; cin >> a; t[i] = a;
		s.insert({a, i});
		sum += a;
	}

	if(sum%k != 0) {
		cout << -1 << "\n";
		return 0;
	}

	for(int i = 1; i <= n; ++i) {
		if(t[i] > sum/k) {
			cout << -1 << "\n";
			return 0;
		}
	}

	if(n == k) {
		for(int i = 1; i <= n; ++i) {
			if(t[i] != sum/k) {
				cout << -1 << "\n";
				return 0;
			}
		}
		cout << 1 << "\n";
		cout << sum/k << " ";
		for(int i = 1; i <= n; ++i) {
			cout << i << " ";
		}
		cout << "\n";
		return 0;
	}

	ll c = 0;
	
	if(k > n/100) {
		vector<pll> v;
		v.push_back({-1, -1});
		for(int i = 1; i <= n; ++i) {
			v.push_back({t[i], i});
		}
		sort(v.begin(), v.end());
		while(sum > 0 && c*k <= 3000000) {
			ll x = min(sum/k - v[n-k].first, v[n-k+1].first);
			mov[c].push_back(x);
			for(int i = n-k+1; i <= n; ++i) {
				v[i] = {v[i].first - x, v[i].second};
				mov[c].push_back(v[i].second);
			}
			sort(v.begin(), v.end());
			sum -= x*k;
			++c;
		}
	} else {
		while(sum > 0 && c*k <= 1000000) {
			ll k1th;
			set<pll>::iterator it;
			if(k < n/2) {
				it = s.end();
				--it;
				int i = n;
				while(i != n - k) {
					--it;
					--i;
				}
			} else {
				it = s.begin();
				int i = 1;
				while(i != n-k) {
					++it;
					++i;
				}
			}
	/*		k1th = (*it).first;
			++it;
		//	cout << "Sum : " << sum << " and k+1:th largest is " << k1th << "\n";
			ll x = min(sum/k - k1th, (*it).first);
			it = s.end();
			vector<pll> ne;
			mov[c].push_back(x);
			for(int i = n; i > n-k; --i) {
				--it;
				ne.push_back({(*it).first - x, (*it).second});
				mov[c].push_back((*it).second);
			}
	*/


			k1th = (*it).first;
			++it;
		//	cout << "Sum : " << sum << " and k+1:th largest is " << k1th << "\n";
			ll x = min(sum/k - k1th, (*it).first);
			vector<pll> ne;
			mov[c].push_back(x);
			for(int i = n - k + 1; i <= n; ++i) {
				s.insert({(*it).first - x, (*it).second});
				mov[c].push_back((*it).second);
				set<pll>::iterator ite = it;
				++it;
				s.erase(ite);
			}

	/*		for(int i = n; i > n-k; --i) {
				it = s.end();
				--it;
				s.erase(it);	
			}
			for(int i = 0; i < ne.size(); ++i) {
				s.insert(ne[i]);
			}
	*/		sum -= x*k;
			++c;
		}
	}
	if(sum != 0) {
		cout << -1 << "\n";
		return 0;
	}

	cout << c << "\n";
	for(int i = 0; i < c; ++i) {
		for(int j = 0; j < mov[i].size(); ++j) {
			cout << mov[i][j] << " ";
		}
		cout << "\n";
	}
}

Test details

Test 1

Group: 1, 2, 3, 5

Verdict: ACCEPTED

input
4 2
2 3 3 2

correct output
3
2 3 1
1 3 2
2 2 4

user output
2
3 2 3 
2 1 4 

Test 2

Group: 1, 2, 3, 5

Verdict: ACCEPTED

input
3 2
2 1 1

correct output
2
1 1 2 
1 1 3 

user output
2
1 3 1 
1 1 2 

Test 3

Group: 1, 2, 3, 5

Verdict: ACCEPTED

input
3 2
1 2 4

correct output
-1

user output
-1

Test 4

Group: 1, 2, 3, 5

Verdict: ACCEPTED

input
4 2
1 2 3 4

correct output
3
1 1 3 
2 2 4 
2 3 4 

user output
3
3 3 4 
1 4 2 
1 1 2 

Test 5

Group: 1, 2, 3, 5

Verdict: ACCEPTED

input
4 2
1 2 1 5

correct output
-1

user output
-1

Test 6

Group: 1, 2, 3, 5

Verdict: ACCEPTED

input
2 2
4 5

correct output
-1

user output
-1

Test 7

Group: 1, 2, 3, 5

Verdict: ACCEPTED

input
5 2
2 1 3 1 1

correct output
3
2 1 3 
1 2 4 
1 3 5 

user output
3
2 1 3 
1 4 5 
1 2 3 

Test 8

Group: 2, 3, 5

Verdict: ACCEPTED

input
8 2
1 1 9101 17 161 57013 7 567

correct output
-1

user output
-1

Test 9

Group: 2, 3, 5

Verdict: ACCEPTED

input
14 2
36 117 358 64 1319 1355 5322 5...

correct output
14
36 1 12 
117 2 12 
358 3 12 
64 4 12 
...

user output
14
6012 12 13 
5294 13 7 
1319 5 6 
670 10 14 
...
Truncated

Test 10

Group: 2, 3, 5

Verdict: ACCEPTED

input
11 2
1 7192 2 49 3973 1 1 68 5274 6...

correct output
11
1 1 5 
2586 2 5 
1 2 6 
1 2 7 
...

user output
11
4657 9 2 
2535 2 5 
698 10 5 
617 9 5 
...
Truncated

Test 11

Group: 2, 3, 5

Verdict: ACCEPTED

input
50000 2
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

correct output
42250
1 1 33212 
1 2 33212 
1 3 33212 
1 4 33212 
...

user output
30104
18581 41667 33212 
706 17435 33212 
553 3767 33212 
53 31460 33212 
...
Truncated

Test 12

Group: 2, 3, 5

Verdict: ACCEPTED

input
50000 2
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

correct output
40020
1 1 27450 
1 2 27450 
1 3 27450 
1 4 27450 
...

user output
25007
10548 5675 35035 
4640 35035 22494 
3932 27450 35120 
3055 37080 22494 
...
Truncated

Test 13

Group: 2, 3, 5

Verdict: ACCEPTED

input
10 2
2730 1860 241 33771 20985 1391...

correct output
10
2730 1 5 
1860 2 5 
241 3 5 
4756 4 5 
...

user output
10
29015 10 4 
7899 9 5 
4756 4 5 
2730 1 5 
...
Truncated

Test 14

Group: 2, 3, 5

Verdict: ACCEPTED

input
685 2
118 132 114 115 123 136 122 10...

correct output
683
21 1 340 
97 1 341 
36 2 341 
96 2 342 
...

user output
379
158 513 123 
153 80 384 
149 479 87 
147 634 262 
...
Truncated

Test 15

Group: 2, 3, 5

Verdict: ACCEPTED

input
623 2
150 137 159 157 138 153 137 14...

correct output
622
77 1 312 
73 1 313 
72 2 313 
65 2 314 
...

user output
339
180 398 582 
178 426 30 
177 533 26 
176 261 467 
...
Truncated

Test 16

Group: 2, 3, 5

Verdict: ACCEPTED

input
973 2
58 52 54 57 52 71 46 58 64 45 ...

correct output
963
48 1 490 
10 1 491 
44 2 491 
8 2 492 
...

user output
509
74 304 892 
71 6 849 
70 549 929 
69 861 389 
...
Truncated

Test 17

Group: 3, 5

Verdict: ACCEPTED

input
989 3
102 100 91 75 103 79 85 83 98 ...

correct output
982
10 1 328 659 
33 1 329 659 
59 1 329 660 
4 2 329 660 
...

user output
383
126 855 170 316 
123 203 814 431 
121 686 196 127 
121 273 299 605 
...
Truncated

Test 18

Group: 3, 5

Verdict: ACCEPTED

input
563 8
91 104 85 106 99 84 94 118 94 ...

correct output
547
21 1 71 143 213 283 355 425 49...

user output
101
116 470 285 533 8 263 473 523 ...
Truncated

Test 19

Group: 3, 5

Verdict: ACCEPTED

input
592 23
161 178 166 168 144 152 152 16...

correct output
547
6 1 26 52 78 104 130 156 182 2...

user output
78
183 310 90 238 290 300 376 189...
Truncated

Test 20

Group: 3, 5

Verdict: ACCEPTED

input
938 15
102 104 89 123 105 111 90 98 9...

correct output
871
5 1 62 125 188 251 313 377 439...

user output
104
120 559 631 435 630 712 870 79...
Truncated

Test 21

Group: 3, 5

Verdict: ACCEPTED

input
747 10
96 88 99 82 108 68 82 110 97 8...

correct output
704
16 1 74 149 224 298 373 449 52...

user output
125
113 33 26 86 685 313 649 537 1...
Truncated

Test 22

Group: 3, 5

Verdict: ACCEPTED

input
991 13
83 76 94 77 76 88 79 91 85 69 ...

correct output
930
17 1 76 152 229 305 381 458 53...

user output
105
98 948 232 825 469 747 121 22 ...
Truncated

Test 23

Group: 4, 5

Verdict: ACCEPTED

input
1000000 2
1000000000000 1000000000000 10...

correct output
500000
1000000000000 1 500001 
1000000000000 2 500002 
1000000000000 3 500003 
1000000000000 4 500004 
...

user output
500000
1000000000000 999999 1000000 
1000000000000 999997 999998 
1000000000000 999995 999

...
Truncated

Test 24

Group: 4, 5

Verdict: ACCEPTED

input
666666 3
1500001500001 1500001500001 15...

correct output
222222
1500001500001 1 222223 444445 ...

user output
222222
1500001500001 666664 666665 66...
Truncated

Test 25

Group: 4, 5

Verdict: ACCEPTED

input
400000 5
2500000000000 2500000000000 25...

correct output
80000
2500000000000 1 80001 160001 2...

user output
80000
2500000000000 399996 399997 39...
Truncated

Test 26

Group: 4, 5

Verdict: ACCEPTED

input
285714 7
3500003500000 3500003500000 35...

correct output
285714
500000500000 1 40817 81633 122...

user output
40821
3500003500000 285708 285709 28...
Truncated

Test 27

Group: 4, 5

Verdict: ACCEPTED

input
20000 100
50000000000000 50000000000000 ...

correct output
200
50000000000000 1 201 401 601 8...

user output
200
50000000000000 19901 19902 199...
Truncated

Test 28

Group: 4, 5

Verdict: ACCEPTED

input
181818 11
5500005500000 5500005500000 55...

correct output
181818
500000500000 1 16529 33058 495...

user output
16539
5500005500000 181808 181809 18...
Truncated

Test 29

Group: 4, 5

Verdict: ACCEPTED

input
10000 200
100000000000000 10000000000000...

correct output
50
100000000000000 1 51 101 151 2...

user output
50
100000000000000 9801 9802 9803...
Truncated

Test 30

Group: 4, 5

Verdict: ACCEPTED

input
6666 300
150015001500150 15001500150015...

correct output
1111
3000300030003 1 23 45 67 89 11...

user output
33
150015001500150 6367 6368 6369...
Truncated

Test 31

Group: 4, 5

Verdict: ACCEPTED

input
4000 500
250000000000000 25000000000000...

correct output
8
250000000000000 1 9 17 25 33 4...

user output
8
250000000000000 3501 3502 3503...
Truncated

Test 32

Group: 4, 5

Verdict: ACCEPTED

input
2857 700
350017500875000 35001750087500...

correct output
2857
500025001250 1 5 9 13 17 21 25...

user output
26
350017500875000 2158 2159 2160...
Truncated

Test 33

Group: 4, 5

Verdict: ACCEPTED

input
2000 1000
500000000000000 50000000000000...

correct output
2
500000000000000 1 3 5 7 9 11 1...

user output
2
500000000000000 1001 1002 1003...
Truncated

Test 34

Group: 5

Verdict: ACCEPTED

input
23514 2
18103 5348 3625 12835 15660 90...

correct output
23513
6865 1 11793 
11202 1 11794 
36 1 11795 
5348 2 11795 
...

user output
17635
23512 1884 6280 
23510 22648 7660 
23508 2585 11004 
23506 16048 14914 
...
Truncated

Test 35

Group: 5

Verdict: ACCEPTED

input
23514 2
18292 21082 22492 20359 17760 ...

correct output
23514
8265 1 11746 
8926 1 11747 
1101 1 11748 
9890 2 11748 
...

user output
17635
23512 22796 6401 
23510 19205 15829 
23508 19065 14764 
23506 6478 21677 
...
Truncated

Test 36

Group: 5

Verdict: ACCEPTED

input
940 2
73 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

correct output
940
73 1 640 
1 2 640 
1 3 640 
1 4 640 
...

user output
940
288385396 181 719 
84122941 226 719 
43831749 640 719 
40891964 501 719 
...
Truncated

Test 37

Group: 4, 5

Verdict: ACCEPTED

input
2 2
50000000000000 50000000000000

correct output
1
50000000000000 1 2 

user output
1
50000000000000 1 2 

Test 38

Group: 5

Verdict: ACCEPTED

input
100000 5
134 153 148 128 126 146 165 16...

correct output
98678
33 1 20010 40009 59997 80000 
10 1 20010 40010 59997 80000 
3 1 20010 40010 59997 80001 
58 1 20011 40010 59997 80001 
...

user output
20042
200 68991 75067 56413 5309 308...
Truncated

Test 39

Group: 5

Verdict: ACCEPTED

input
100000 5
152 137 163 145 132 157 183 15...

correct output
98711
1 1 19996 40005 60007 80009 
71 1 19996 40005 60008 80009 
46 1 19997 40005 60008 80009 
24 1 19997 40005 60008 80010 
...

user output
20044
199 82927 38184 91012 63696 60...
Truncated

Test 40

Group: 5

Verdict: ACCEPTED

input
10 5
1499332 1501242 1498874 150016...

correct output
10
574 1 2 5 7 9 
1498721 1 3 5 7 9 
37 1 3 6 7 9 
116 2 3 6 7 9 
...

user output
10
1500135 6 4 9 2 7 
1498301 8 3 1 5 10 
991 1 2 5 10 7 
274 9 5 10 3 7 
...
Truncated

Test 41

Group: 5

Verdict: ACCEPTED

input
100 50
1002132999440 1001266333597 10...

correct output
100
1267999683 1 2 4 6 8 10 12 14 ...

user output
29
999807000103 46 51 17 66 65 60...
Truncated

Test 42

Group: 5

Verdict: ACCEPTED

input
1000 50
100346633179 101226632849 1003...

correct output
1000
1839998687 1 20 40 60 80 100 1...

user output
249
101353299541 481 47 936 307 25...
Truncated

Test 43

Group: 5

Verdict:

input
1000000 2
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

correct output
999996
1 1 707107 
2 2 707107 
3 3 707107 
4 4 707107 
...

user output
-1

Test 44

Group: 5

Verdict:

input
1000000 2
999999551533 1000000473528 100...

correct output
1000000
146192314 1 500000 
999853359219 1 500001 
146463134 2 500001 
999854010394 2 500002 
...

user output
(empty)

Test 45

Group: 5

Verdict:

input
666666 3
1500001336447 1500001298201 15...

correct output
666666
1499958849879 1 222223 444445 ...

user output
-1

Test 46

Group: 5

Verdict: ACCEPTED

input
400000 5
2499999946636 2500000060399 25...

correct output
400000
2499910300054 1 80001 160001 2...

user output
144000
2500000199995 131332 373114 10...
Truncated

Test 47

Group: 5

Verdict: ACCEPTED

input
2336 856
42808218598 42808218183 428082...

correct output
2336
10257 1 3 6 9 11 14 17 20 22 2...

user output
63
42808219490 2068 862 2091 2293...
Truncated

Test 48

Group: 5

Verdict:

input
285714 7
3500003576920 3500003507271 35...

correct output
285714
499997032073 1 40817 81633 122...

user output
-1

Test 49

Group: 5

Verdict:

input
181818 11
5500005515540 5500005459088 55...

correct output
181818
500002072749 1 16529 33058 495...

user output
-1

Test 50

Group: 5

Verdict: ACCEPTED

input
40000 50
25000000005730 24999999994976 ...

correct output
40000
4690 1 800 1600 2401 3200 4001...

user output
1584
25000000019950 6889 5714 31140...
Truncated

Test 51

Group: 5

Verdict: ACCEPTED

input
20000 100
50000000003586 50000000000483 ...

correct output
19998
3844 1 201 401 600 801 1001 12...

user output
398
50000000009900 14538 3126 3144...
Truncated

Test 52

Group: 5

Verdict: ACCEPTED

input
10000 200
100000000000713 99999999996921...

correct output
9995
84 1 51 100 151 201 250 301 35...

user output
137
100000000004800 9312 6418 9086...
Truncated

Test 53

Group: 5

Verdict: ACCEPTED

input
6666 300
150015001497695 15001500150098...

correct output
6666
6771 1 23 45 67 89 112 134 156...

user output
993
150015001503183 5826 139 3486 ...
Truncated

Test 54

Group: 5

Verdict: ACCEPTED

input
4000 500
250000000001078 24999999999820...

correct output
3979
93 1 9 16 24 32 40 48 56 64 72...

user output
32
250000000001500 1228 347 2061 ...
Truncated

Test 55

Group: 5

Verdict: ACCEPTED

input
2857 700
350017500876401 35001750087429...

correct output
2857
500024974229 1 5 9 13 17 21 25...

user output
1797
350017500875772 952 2476 7 270...
Truncated

Test 56

Group: 5

Verdict: ACCEPTED

input
2000 1000
499999999999833 50000000000035...

correct output
1955
1 1 2 4 6 8 11 13 15 17 19 21 ...

user output
12
500000000000000 1127 1658 1879...
Truncated