#include <stdio.h>
#include <stdlib.h>
int main(){
int i;
int d,n;
int *a;
char *rl;
int sum;
scanf("%d %d",&d,&n);
a = (int*)calloc(n,sizeof(int));
rl = (char*)calloc(n,sizeof(char));
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
sum = a[0];
rl[0] = 1;
i = 1;
while(i<n){
if(rl[i]==0){
rl[i] = 1;
sum += a[i];
if(abs(sum)>d){
sum -= a[i];
}else{
i++;
}
}else if(rl[i]==1){
rl[i] = 2;
sum -= a[i];
if(abs(sum)>d){
sum += a[i];
}else{
i++;
}
}else{
rl[i] = 0;
i--;
}
}
if(abs(sum)<=d){
}else{
while(i>0);
}
for(i=0;i<n;i++){
if(rl[i]==1) printf("R");
else if(rl[i]==2)printf("L");
else while(i>0);
}
printf("\n");
return 0;
}
n分のaが来て、
そのaを左右に動かすプログラムなんですが、
1週間考えてもわからないのでお力をお貸しくださいorz
2分木を片っ端から探索する感じのコードのつもりです。
出力に無限ループが含まれてるのはエラーチェックです(失敗しても、出力違いかランタイムエラーかしかわからないため)