Submission #1329446

#TimeUsernameProblemLanguageResultExecution timeMemory
1329446Faisal_SaqibExperiments with Gorlum (IZhO13_expgorl)C++20
0 / 100
1095 ms460 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <array>
#include <cmath>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef long double ld;
#define int ld
int32_t main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int k;
    cin>>k;
    string s;
    cin>>s;
    int n=s.size();
    int gx,gy,lx,ly;
    cin>>lx>>ly>>gx>>gy;
    gx-=lx;
    gy-=ly;
    // int cx=0,cy=0;
    // for(int i=0;i<n;i++)
    // {
    //     // cout<<s[i]<<endl;
    //     switch(s[i])
    //     {
    //         case 'L':
    //             cx--;
    //             break;
    //         case 'R':
    //             cx++;
    //             break;
    //         case 'F':
    //             cy++;
    //             break;
    //         case 'B':
    //             cy--;
    //             break;
    //         default:;
    //     };
    // }
    int mi=gx*gx + gy*gy;
    int mx=gx*gx+gy*gy;
    for(int32_t i=0;i<k*n;i++)
    {
        switch(s[i%(int32_t)n])
        {
            case 'L':
                gx--;
                break;
            case 'R':
                gx++;
                break;
            case 'F':
                gy++;
                break;
            case 'B':
                gy--;
                break;
            default:;
        };
        mi=min(mi,gx*gx+gy*gy);
        mx=max(mx,gx*gx+gy*gy);
        // cout<<cx<<' '<<cy<<endl;
        // for(int m=0;m<=k;m++)
        // {
        //     int nx=gx+m*cx,ny=gy+m*cy;
        //     cout<<(nx*nx+ny*ny)<<' ';
        // }
        // cout<<endl;
        // int l=-1,r=k-1;
        // while(l+1<r)
        // {
        //     int m=(l+r)/2;
        //     int nx=gx+m*cx,ny=gy+m*cy;
        //     int nx1=nx+cx,ny1=ny+cy;
        //     if((nx*nx)+(ny*ny) <= (nx1*nx1)+(ny1*ny1))
        //     {
        //         r=m;
        //     }
        //     else
        //     {
        //         l=m;
        //     }
        // }
        // int nx=gx+r*cx,ny=gy+r*cy;
        // mi=min(mi,nx*nx + ny*ny);

        // r=k-1; // we using some prefix
        // nx=gx+r*cx,ny=gy+r*cy;
        // mx=max(mx,nx*nx + ny*ny);
        // r=0;
        // nx=gx+r*cx,ny=gy+r*cy;
        // mx=max(mx,nx*nx + ny*ny);
    }
    cout.precision(13);
    cout<<fixed<<sqrtl(mi)<<' '<<sqrtl(mx)<<endl;;
}
#Verdict Execution timeMemoryGrader output
Fetching results...