제출 #1332033

#제출 시각아이디문제언어결과실행 시간메모리
1332033MuhammadSaram생물 실험 (IZhO13_expgorl)C++20
0 / 100
1 ms968 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long

signed main()
{
	int k;
	cin>>k;
	string s;
	cin>>s;
	int x,y,x1,y1;
	cin>>x1>>y1>>x>>y;
	int x2=x, y2=y, tx=0, ty=0, mx=(x-x1)*(x-x1)+(y-y1)*(y-y1);
	for (int i=0;i<s.size();i++)
	{
		if (s[i]=='L') x--, tx--;
		if (s[i]=='R') x++, tx++;
		if (s[i]=='B') y--, ty--;
		if (s[i]=='F') y++, ty++;
		mx=max(mx,(x-x1)*(x-x1)+(y-y1)*(y-y1));
	}
	x=x2, y=y2;
	vector<pair<int,int>> v;
	for (int i=0;i<=k;i++)
		v.push_back({(x-x1)*(x-x1)+(y-y1)*(y-y1),i}), x+=tx, y+=ty;
	sort(v.begin(),v.end());
	int mn=mx;
	x=x2, y=y2;x+=tx*(k-1), y+=ty*(k-1);
	mx=max(mx,(x-x1)*(x-x1)+(y-y1)*(y-y1));
	for (int i=0;i<s.size();i++)
	{
		if (s[i]=='L') x--;
		if (s[i]=='R') x++;
		if (s[i]=='B') y--;
		if (s[i]=='F') y++;
		mx=max(mx,(x-x1)*(x-x1)+(y-y1)*(y-y1));
	}
	for (int j=0;j<min(3,(signed)v.size());j++)
	{
		mn=min(mn,v[j].first);
		if (v[j].second==k) continue;
		x=x2+tx*v[j].second, y=y2+ty*v[j].second;
		for (int i=0;i<s.size();i++)
		{
			if (s[i]=='L') x--;
			if (s[i]=='R') x++;
			if (s[i]=='B') y--;
			if (s[i]=='F') y++;
			mn=min(mn,(x-x1)*(x-x1)+(y-y1)*(y-y1));
		}
	}
	cout<<setprecision(15)<<mn<<' '<<mx<<endl;	

	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...