CSES - Siperia opettaa 3.0 - Results
Submission details
Task:Jump
Sender:Hansuzu
Submission time:2016-07-29 18:15:07 +0300
Language:C++
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED100
Test results
testverdicttime
#1ACCEPTED0.06 sdetails
#2ACCEPTED0.06 sdetails
#3ACCEPTED0.17 sdetails
#4ACCEPTED0.17 sdetails
#5ACCEPTED0.17 sdetails
#6ACCEPTED0.17 sdetails
#7ACCEPTED0.18 sdetails
#8ACCEPTED0.18 sdetails
#9ACCEPTED0.17 sdetails
#10ACCEPTED0.17 sdetails
#11ACCEPTED0.17 sdetails
#12ACCEPTED0.17 sdetails
#13ACCEPTED0.18 sdetails
#14ACCEPTED0.20 sdetails
#15ACCEPTED0.18 sdetails
#16ACCEPTED0.17 sdetails
#17ACCEPTED0.17 sdetails
#18ACCEPTED0.17 sdetails
#19ACCEPTED0.18 sdetails
#20ACCEPTED0.15 sdetails
#21ACCEPTED0.17 sdetails
#22ACCEPTED0.16 sdetails
#23ACCEPTED0.17 sdetails
#24ACCEPTED0.17 sdetails
#25ACCEPTED0.17 sdetails
#26ACCEPTED0.17 sdetails
#27ACCEPTED0.17 sdetails
#28ACCEPTED0.16 sdetails
#29ACCEPTED0.16 sdetails
#30ACCEPTED0.17 sdetails
#31ACCEPTED0.16 sdetails
#32ACCEPTED0.17 sdetails
#33ACCEPTED0.17 sdetails
#34ACCEPTED0.16 sdetails
#35ACCEPTED0.16 sdetails
#36ACCEPTED0.17 sdetails

Compiler report

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

Code

#include <iostream>
#include <vector>
#define MP make_pair
#define F first
#define S second
using namespace std;
#define INF 1000000000
#define MAX 50505
#define MID 20202
int N, Q;

int a[202];

int mnd[2][MAX];

bool okc(int a){
  return a>=0 && a<MAX;
}


int gmnd(int p, int a){
  if (!okc(a)) return INF;
  return mnd[p][a];
}
vector<pair<int, pair<int, int> > > p;

int main(){
  for (int i=0; i<MAX; ++i) mnd[0][i]=mnd[1][i]=INF;
  cin >> N;
  for (int i=0; i<N; ++i){
    cin >> a[i]; a[i]+=MID;
  }
  mnd[0][MID]=0;
  p.push_back(MP(MID, MP(0, 0)));
  for (int j=0; j<p.size(); ++j){
    int cp=p[j].F;
    int mp=p[j].S.F;
    int vl=p[j].S.S;
    if (mnd[mp][cp]!=vl) continue;
    for (int i=0; i<N; ++i){
      int jt=2*a[i]-cp;
      if (!okc(jt)) continue;
      if (vl+1 < mnd[!mp][jt]){
	mnd[!mp][jt]=vl+1;
	p.push_back(MP(jt, MP(!mp, vl+1)));
      }
    }
  }
  cin >> Q;
  for (int i=0; i<Q; ++i){
    int s, t;
    cin >> s >> t; t+=MID;
    int ans=min(gmnd(0, t-s), gmnd(1, t+s));
    if (ans==INF) cout << -1 << "\n";
    else cout << ans << "\n";
  }
  
}

Test details

Test 1

Verdict: ACCEPTED

input
4
1
2
4
7
...

correct output
-1
-1
2
2
-1
...

user output
-1
-1
2
2
-1
...

Test 2

Verdict: ACCEPTED

input
4
1
2
6
10
...

correct output
-1
1
2
-1
1
...

user output
-1
1
2
-1
1
...

Test 3

Verdict: ACCEPTED

input
200
12
14
30
101
...

correct output
2
2
1
2
2
...

user output
2
2
1
2
2
...

Test 4

Verdict: ACCEPTED

input
200
13
22
196
211
...

correct output
2
2
2
2
2
...

user output
2
2
2
2
2
...

Test 5

Verdict: ACCEPTED

input
200
10
41
107
167
...

correct output
2
1
2
2
2
...

user output
2
1
2
2
2
...

Test 6

Verdict: ACCEPTED

input
200
91
166
275
278
...

correct output
2
2
2
3
2
...

user output
2
2
2
3
2
...

Test 7

Verdict: ACCEPTED

input
200
18
104
138
182
...

correct output
2
2
2
2
2
...

user output
2
2
2
2
2
...

Test 8

Verdict: ACCEPTED

input
200
115
144
272
274
...

correct output
2
2
2
2
2
...

user output
2
2
2
2
2
...

Test 9

Verdict: ACCEPTED

input
200
84
177
208
219
...

correct output
2
2
2
2
1
...

user output
2
2
2
2
1
...

Test 10

Verdict: ACCEPTED

input
200
96
131
228
258
...

correct output
2
2
2
2
2
...

user output
2
2
2
2
2
...

Test 11

Verdict: ACCEPTED

input
200
0
77
132
189
...

correct output
2
2
2
2
2
...

user output
2
2
2
2
2
...

Test 12

Verdict: ACCEPTED

input
200
3
33
74
118
...

correct output
2
2
2
2
2
...

user output
2
2
2
2
2
...

Test 13

Verdict: ACCEPTED

input
200
95
162
171
448
...

correct output
-1
-1
2
2
2
...

user output
-1
-1
2
2
2
...

Test 14

Verdict: ACCEPTED

input
200
32
72
229
239
...

correct output
2
-1
2
2
-1
...

user output
2
-1
2
2
-1
...

Test 15

Verdict: ACCEPTED

input
200
30
124
136
176
...

correct output
2
-1
2
-1
2
...

user output
2
-1
2
-1
2
...

Test 16

Verdict: ACCEPTED

input
116
34
68
85
87
...

correct output
2
2
2
2
2
...

user output
2
2
2
2
2
...

Test 17

Verdict: ACCEPTED

input
112
64
264
268
298
...

correct output
2
2
2
2
2
...

user output
2
2
2
2
2
...

Test 18

Verdict: ACCEPTED

input
64
14
15
19
31
...

correct output
8
6
10
4
6
...

user output
8
6
10
4
6
...

Test 19

Verdict: ACCEPTED

input
200
0
1
2
3
...

correct output
14
14
8
6
40
...

user output
14
14
8
6
40
...

Test 20

Verdict: ACCEPTED

input
1
2231
100000
16 2
6 8
...

correct output
-1
-1
-1
-1
-1
...

user output
-1
-1
-1
-1
-1
...

Test 21

Verdict: ACCEPTED

input
2
1091
2342
100000
1588 4004
...

correct output
-1
-1
-1
-1
-1
...

user output
-1
-1
-1
-1
-1
...

Test 22

Verdict: ACCEPTED

input
3
144
151
440
100000
...

correct output
168
99
87
262
16
...

user output
168
99
87
262
16
...

Test 23

Verdict: ACCEPTED

input
4
2388
2979
6715
8029
...

correct output
10
52
47
56
77
...

user output
10
52
47
56
77
...

Test 24

Verdict: ACCEPTED

input
5
1371
1946
6455
6889
...

correct output
24
6
15
25
26
...

user output
24
6
15
25
26
...

Test 25

Verdict: ACCEPTED

input
6
1026
1031
4929
5038
...

correct output
18
9
11
12
8
...

user output
18
9
11
12
8
...

Test 26

Verdict: ACCEPTED

input
7
21
44
60
70
...

correct output
16
20
16
20
10
...

user output
16
20
16
20
10
...

Test 27

Verdict: ACCEPTED

input
8
95
627
710
784
...

correct output
6
4
5
5
6
...

user output
6
4
5
5
6
...

Test 28

Verdict: ACCEPTED

input
9
48
209
791
920
...

correct output
3
4
3
6
6
...

user output
3
4
3
6
6
...

Test 29

Verdict: ACCEPTED

input
10
814
1017
1217
3259
...

correct output
4
6
6
4
6
...

user output
4
6
6
4
6
...

Test 30

Verdict: ACCEPTED

input
2
6748
9615
100000
6956 7730
...

correct output
-1
-1
-1
-1
-1
...

user output
-1
-1
-1
-1
-1
...

Test 31

Verdict: ACCEPTED

input
2
2955
5079
100000
5049 3601
...

correct output
-1
-1
-1
-1
-1
...

user output
-1
-1
-1
-1
-1
...

Test 32

Verdict: ACCEPTED

input
2
8591
9235
100000
6759 9705
...

correct output
-1
-1
-1
-1
-1
...

user output
-1
-1
-1
-1
-1
...

Test 33

Verdict: ACCEPTED

input
2
1847
2965
100000
6674 4858
...

correct output
-1
-1
-1
-1
-1
...

user output
-1
-1
-1
-1
-1
...

Test 34

Verdict: ACCEPTED

input
2
2033
7688
100000
4427 4007
...

correct output
-1
-1
-1
-1
-1
...

user output
-1
-1
-1
-1
-1
...

Test 35

Verdict: ACCEPTED

input
2
0
1
100000
3190 5237
...

correct output
-1
-1
-1
4232
4266
...

user output
-1
-1
-1
4232
4266
...

Test 36

Verdict: ACCEPTED

input
2
9999
10000
100000
4761 947
...

correct output
3814
1612
-1
-1
-1
...

user output
3814
1612
-1
-1
-1
...