CSES - APIO 2007 - Results
Submission details
Task:Backup
Sender:Olli
Submission time:2019-03-07 15:07:43 +0200
Language:C++
Status:READY
Result:60
Feedback
groupverdictscore
#1ACCEPTED30
#2ACCEPTED30
#30
Test results
testverdicttimegroup
#1ACCEPTED0.02 s1, 2, 3details
#2ACCEPTED0.03 s1, 2, 3details
#3--3details
#4--3details
#5ACCEPTED0.01 s1, 2, 3details
#6ACCEPTED0.26 s2, 3details
#7ACCEPTED0.02 s1, 2, 3details
#8ACCEPTED0.01 s1, 2, 3details
#9ACCEPTED0.03 s2, 3details
#10ACCEPTED0.17 s2, 3details
#11--3details
#12--3details
#13ACCEPTED0.54 s3details
#14ACCEPTED0.03 s1, 2, 3details
#15ACCEPTED0.02 s2, 3details
#16ACCEPTED0.08 s3details
#17--3details
#18ACCEPTED0.02 s2, 3details
#19ACCEPTED0.02 s2, 3details
#20--3details

Code

#include <iostream>

using namespace std;

const int N = 1e5 + 5;

int d[N];
int s[N];
int dp[N];
int mi[N];

int main() {
	int n, k;
	cin >> n >> k;
	for(int i = 1; i <= n; ++i) {
		cin >> s[i];
	}
	for(int i = 1; i < n; ++i) {
		d[i] = s[i+1] - s[i];
	}
	mi[n] = 1e9;

	for(int i = n-1; i >= 1; --i) {
		dp[i] = d[i];
		mi[i] = min(mi[i+1], dp[i]);
	}


	for(int i = 2; i <= k; ++i) {
		int newDP[N];
		for(int j = 1; j <= n-1; ++j) {
			newDP[j] = 1e9;
			if(j+2 <= n-1) {
				newDP[j] = mi[j+2] + d[j];
			}
		}
		for(int j = n-1; j >= 1; --j) {
			dp[j] = newDP[j];
			mi[j] = min(mi[j+1], dp[j]);
		}		
	}

	cout << mi[1] << "\n";

}

Test details

Test 1

Group: 1, 2, 3

Verdict: ACCEPTED

input
2 1
0
1000000000

correct output
1000000000

user output
1000000000

Test 2

Group: 1, 2, 3

Verdict: ACCEPTED

input
17 8
101266
101394
101458
101490
...

correct output
340

user output
340

Test 3

Group: 3

Verdict:

input
100000 49000
29983
53806
76909
106815
...

correct output
411321413

user output
(empty)

Test 4

Group: 3

Verdict:

input
100000 30000
29983
53806
76909
106815
...

correct output
100755932

user output
(empty)

Test 5

Group: 1, 2, 3

Verdict: ACCEPTED

input
20 10
126229031
250138471
333910089
443521720
...

correct output
537092323

user output
537092323

Test 6

Group: 2, 3

Verdict: ACCEPTED

input
10000 4999
168328
266967
462469
639689
...

correct output
492516409

user output
492516409

Test 7

Group: 1, 2, 3

Verdict: ACCEPTED

input
10 4
165
375
439
456
...

correct output
44

user output
44

Test 8

Group: 1, 2, 3

Verdict: ACCEPTED

input
20 9
4336
4500
4552
4702
...

correct output
773

user output
773

Test 9

Group: 2, 3

Verdict: ACCEPTED

input
2001 1000
1230
1440
1630
2230
...

correct output
493503

user output
493503

Test 10

Group: 2, 3

Verdict: ACCEPTED

input
10000 3000
245408
417449
650973
863296
...

correct output
101056127

user output
101056127

Test 11

Group: 3

Verdict:

input
50000 20000
37035
37042
37046
37052
...

correct output
129968

user output
(empty)

Test 12

Group: 3

Verdict:

input
99999 48000
15929
43928
65765
86730
...

correct output
375524431

user output
(empty)

Test 13

Group: 3

Verdict: ACCEPTED

input
100000 1000
536
9214
34619
53734
...

correct output
75975

user output
75975

Test 14

Group: 1, 2, 3

Verdict: ACCEPTED

input
10 4
5851
5854
5856
5859
...

correct output
2664

user output
2664

Test 15

Group: 2, 3

Verdict: ACCEPTED

input
100 45
3712
13742
17394
19428
...

correct output
140256

user output
140256

Test 16

Group: 3

Verdict: ACCEPTED

input
20000 400
3174
3175
3176
3179
...

correct output
803105

user output
803105

Test 17

Group: 3

Verdict:

input
100000 49000
3605
14510
18001
20881
...

correct output
162316123

user output
(empty)

Test 18

Group: 2, 3

Verdict: ACCEPTED

input
100 50
0
1000000
1000002
1000005
...

correct output
1002499

user output
1002499

Test 19

Group: 2, 3

Verdict: ACCEPTED

input
1000 500
0
1000000
1000002
1000005
...

correct output
1249999

user output
1249999

Test 20

Group: 3

Verdict:

input
100000 49494
123
65659
98427
114811
...

correct output
250954854

user output
(empty)