Untitled
unknown
c_cpp
3 years ago
1.0 kB
5
Indexable
#include <stdio.h>
int stone[16];
int jumped[17] = {0};
int color[17] = {0};
int max = -1, energy = 0, step = 0, anstep = -1;
int n, s, t;
void jump(int pos, int start, int end){
if(jumped[pos] == 1 || pos == 0 || pos > n){
jumped[pos] = 0;
return;
}
else{
jumped[pos] = 1;
step++;
energy += stone[pos];
}
if(pos == end){
if(energy > max){
max = energy;
anstep = step;
}
energy = 0;
step = 0;
jumped[pos] = 0;
return;
}
jump(pos-1, start, end);
jump(pos+1, start, end);
for(int i = 1; i <= n; i++){
if(color[pos] == color[i]) jump(i, start, end);
}
}
int main(){
scanf("%d%d%d", &n, &s, &t);
for(int i = 1; i <= n; i++){
scanf("%d", &stone[i]);
}
for(int i = 1; i <= n; i++){
scanf("%d", &color[i]);
}
jump(s, s, t);
printf("%d %d\n", max, anstep);
}Editor is loading...