| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1329445 | Faisal_Saqib | 생물 실험 (IZhO13_expgorl) | C++20 | 0 ms | 0 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>>gx>>gy>>lx>>ly;
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(int i=0;i<k*n;i++)
{
switch(s[i%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;;
}