原题链接:https://vjudge.net/problem/Gym-100134J
分类:构造法
备注:思维题
#include<bits/stdc++.h>
using namespace std;
int t,a,b,c;
int main(void){
freopen("jumping.in","r",stdin);
freopen("jumping.out","w",stdout);
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&a,&b,&c);
printf("0 ");
int pos=0;
if(c%3==0){
for(int i=1;i<=c/3;i++)
printf("%d ",pos+=3);
printf("%d ",pos+=1);
for(int i=1;i<=c/3;i++)
printf("%d ",pos-=3);
printf("%d ",pos+=1);
for(int i=1;i<=c/3;i++)
printf("%d ",pos+=3);
a-=2;
}else if(c%3==1){
for(int i=1;i<=c/3+1;i++)
printf("%d ",pos+=3);
printf("%d ",pos-=2);
for(int i=1;i<=c/3;i++)
printf("%d ",pos-=3);
printf("%d ",pos+=1);
for(int i=1;i<=c/3;i++)
printf("%d ",pos+=3);
printf("%d ",pos+=2);
a-=1;
b-=2;
}else{
for(int i=1;i<=c/3+1;i++)
printf("%d ",pos+=3);
printf("%d ",pos-=1);
for(int i=1;i<=c/3;i++)
printf("%d ",pos-=3);
printf("%d ",pos-=1);
for(int i=1;i<=c/3+1;i++)
printf("%d ",pos+=3);
a-=2;
}
for(int i=1;i<a;i++)
printf("%d ",++pos);
for(int i=1;i<=(b+1)/2;i++){
pos+=2;
printf("%d ",pos);
}
if(b%2==0)pos++;
else pos--;
printf("%d%c",pos,b==1?'\n':' ');
for(int i=1;i<=b-(b+1)/2;i++){
pos-=2;
printf("%d%c",pos,i==b-(b+1)/2?'\n':' ');
}
}
return 0;
}