LSTTCD2 - Thử thách cực đại - Đá chìm đá nổi 2

Tác giả: ll931110

Ngôn ngữ: C++

#include <iostream>
using namespace std;

int main()
{
    int n,x,y,t;
    
    //freopen("lsttcd2.inp","r",stdin);
    //freopen("lsttcd2.out","w",stdout);
    
    scanf("%d%d%d", &n, &x, &y);
    
    if (n == 1) cout << "WIN";
    else if (x == y) cout << -1;
    else if (y == x + 1)
    {
         if (x == 1)
         {
               while (x + 2 <= n)
               {
                     cout << "R 2" << endl;
                     x += 2;
               }
               
               if (x == n)
               {
                     cout << "L 1" << endl;
                     x--;
               }
               else
               {
                     cout << "R 1" << endl;
                     x++;
               }
               
               while (x > y)
               {
                     cout << "L 2" << endl;
                     x -= 2;
               }
               
               cout << "WIN";
         }
         else if (y == n)
         {
              while (x > 2)
              {
                    cout << "L 2" << endl;
                    x -= 2;
              }
              
              if (x == 2)
              {
                    cout << "L 1" << endl;
                    x = 1;
              }
              else
              {
                    cout << "R 1" << endl;
                    x = 2;
              }
              
              while (x < y)
              {
                    cout << "R 2" << endl;
                    x += 2;
              }
              
              cout << "WIN";
         }
         else cout << -1;
    }
    else if (x < y)
    {
        t = x;
        while (x > 2)
        {
              cout << "L 2" << endl;
              x -= 2;
        }
        
        if (x == 1)
        {
              cout << "R 1" << endl;
              x = 2;
        }
        else if (x == 2)
        {
             cout << "L 1" << endl;
             x = 1;
        }
        
        while (x < t)
        {
              cout << "R 2" << endl;
              x += 2;
        }
        
        while (x < y - 1)
        {
              cout << "R 1" << endl;
              x++;
        }
        
        if (y == n) cout << "R 1" << endl;
        else
        {
            while (x + 2 <= n)
            {
                  cout << "R 2" << endl;
                  x += 2;
            }
            
            if (x == n)
            {
                  cout << "L 1" << endl;
                  x--;
            }
            else if (x == n - 1)
            {
                 cout << "R 1" << endl;
                 x++;
            }
            
            while (x != y)
            {
                  cout << "L 2" << endl;
                  x -= 2;
            }
        }
        
        cout << "WIN";
    }
    else if (x == y + 1)
    {
         if (y == 1)
         {
               while (x + 2 <= n)
               {
                     cout << "R 2" << endl;
                     x += 2;
               }
               
               if (x == n)
               {
                     cout << "L 1" << endl;
                     x--;
               }
               else if (x == n - 1)
               {
                    cout << "R 1" << endl;
                    x++;
               }
               
               while (x > y)
               {
                     cout << "L 2" << endl;
                     x -= 2;
               }
               
               cout << "WIN";
         }
         else if (x == n)
         {
              while (x > 2)
              {
                    cout << "L 2" << endl;
                    x -= 2;
              }
              
              if (x == 2)
              {
                    cout << "L 1" << endl;
                    x = 1;
              }
              else
              {
                    cout << "R 1" << endl;
                    x = 2;
              }
              
              while (x < y)
              {
                    cout << "R 2" << endl;
                    x += 2;
              }
              
              cout << "WIN";
         }
         else cout << -1;
    }
    else
    {
        t = x;
        while (x + 2 <= n)
        {
              cout << "R 2" << endl;
              x += 2;
        }
        
        if (x == n - 1)
        {
              cout << "R 1" << endl;
              x = n;
        }
        else
        {
             cout << "L 1" << endl;
             x = n - 1;
        }
        
        while (x > t)
        {
             cout << "L 2" << endl;
             x -= 2;
        }
        
        while (x > y + 1)
        {
              cout << "L 1" << endl;
              x--;
        }
        
        if (y == 1) cout << "L 1" << endl;
        else
        {
            while (x > 2)
            {
                  cout << "L 2" << endl;
                  x -= 2;
            }
            
            if (x == 1)
            {
                  cout << "R 1" << endl;
                  x = 2;
            }
            else if (x == 2)
            {
                 cout << "L 1" << endl;
                 x = 1;
            }
            
            while (x != y)
            {
                  cout << "R 2" << endl;
                  x += 2;
            }
        }
        
        cout << "WIN";
    }
}

Download