LSTTCD2 - Thử thách cực đại - Đá chìm đá nổi 2
Tác giả: hieult
Ngôn ngữ: C++
#include <stdio.h>
//#include <conio.h>
int n,x,y,flag[10001];
void nhayu1(int u)
{
for(int i = u-2;i>=1;i=i-2)
{
printf("L 2\n");
flag[i] = 1;
}
if(u%2==0) {printf("L 1\n"); flag[2] = 1;}
}
void nhay1u(int u)
{
int t = 1;
if(flag[2]==0)
{ t=2;printf("R 1\n") ; flag[2] = 1;}
for(int i = t+2;i<=u;i=i+2)
{
printf("R 2\n");
flag[i] = 1;
}
}
void nhayun(int u)
{
for(int i = u+2;i<=n;i=i+2)
{
printf("R 2\n");
flag[i] = 1;
}
if((n-u)%2 !=0) {printf("R 1\n");flag[n-1] = 1;}
}
void nhaynu(int u)
{
int t = n;
if(flag[n-1]==0)
{
t = n-1;printf("L 1\n");flag[n-1] = 1;}
for(int i = t-2;i>=u;i=i-2)
{
printf("L 2\n");
flag[i] = 1;
}
}
int TTD(int a)
{
if(a<0) return -a;
else return a;
}
int main()
{
//while (scanf("%d %d %d",&n,&x,&y)>0)
//{
scanf("%d %d %d",&n,&x,&y);
for(int i = 1;i<=n;i++) flag[i] = 0;
int check = 0;
if(TTD(x-y)==1) check = 1;
if(x==1 ||x==n||y==1 ||y==n) check = 0;
if(x==y) check = 1;
if(n==1) check = 0;
if(check == 1)
printf("-1");
else
{
flag[x] = 1;
if(x==y);
else if(x<y)
{
nhayu1(x);if(y!=n &&y==x+1); else nhay1u(x+1);
for(int i = x+1;i<y-1;i++)
printf("R 1\n");
if(y==n && y == x+1);else nhayun(y-1);nhaynu(y);
}
else
{
nhayun(x);if(y!=1&&y==x-1);else nhaynu(x-1);
for(int i = x-1;i>y+1;i--)
printf("L 1\n");
if(y==1 && x==2);else nhayu1(y+1);nhay1u(y);
}
printf("WIN");
}
// }
// getch();
}