Submission #339369

#TimeUsernameProblemLanguageResultExecution timeMemory
339369amunduzbaevExperiments with Gorlum (IZhO13_expgorl)C++14
0 / 100
1 ms364 KiB
/** made by amunduzbaev **/ #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <ext/rope> using namespace __gnu_pbds; using namespace __gnu_cxx; using namespace std; #define ff first #define ss second #define pb push_back #define mp make_pair #define ub upper_bound #define lb lower_bound #define ll long long #define ld long double #define pii pair<int, int> #define pll pair<ll, ll> #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(),x.rend() #define fastios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define vll vector<ll> #define vii vector<int> #define vpii vector<pii> #define vpll vector<pll> #define cnt(a)__builtin_popcount(a) template<class tmp> bool umin(tmp& a, const tmp b) {return a > b? a = b, true:false;} template<class tmp> bool umax(tmp& a, const tmp b) {return a < b? a = b, true:false;} typedef tree<pii,null_type,less<pii>,rb_tree_tag,tree_order_statistics_node_update> ordered_set; const int N = 1e7+5; const int mod = 1e9+7; const ll inf = 1e18; const ld Pi = acos(-1); ll n, m, k, ans, a[N]; ll gx, gy, lx, ly; string s; void solve(){ cin>>k>>s; cin>>lx>>ly; cin>>gx>>gy; ll nx = gx, ny = gy, ex = gx, ey = gy, sx = gx, sy = gy, wx = gx, wy = gy; ll disx = 0, disy = 0; ll endx = gx, endy = gy; ld maxdis = (ld)sqrt(((endx - lx) * (endx - lx)) + ((endy - ly) * (endy - ly))); ld mindis = (ld)sqrt(((endx - lx) * (endx - lx)) + ((endy - ly) * (endy - ly))); for(ll i=0;i<sz(s);i++){ if(s[i] == 'L') endx--; else if(s[i] == 'R') endx++; else if(s[i] == 'F') endy++; else if(s[i] == 'B') endy--; else continue; umax(maxdis, (ld)sqrt(((endx - lx) * (endx - lx)) + ((endy - ly) * (endy - ly)))); umin(mindis, (ld)sqrt(((endx - lx) * (endx - lx)) + ((endy - ly) * (endy - ly)))); if(endy > ny) nx = endx, ny = endy; if(endy < sy) sx = endx, sy = endy; if(endx > ex) ex = endx, ey = endy; if(endx < wx) wx = endx, wy = endy; } disx = endx - gx, disy = endy - gy; nx = nx - gx, ny = ny - gy; sx = sx - gx, sy = sy - gy; ex = ex - gx, ey = ey - gy; wx = wx - gx, wy = wy - gy; for(ll j=1;j<k;j++){ endx += disx, endy += disy; // NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN endx += nx, endy += ny; umax(maxdis, (ld)sqrt(((endx - lx) * (endx - lx)) + ((endy - ly) * (endy - ly)))); umin(mindis, (ld)sqrt(((endx - lx) * (endx - lx)) + ((endy - ly) * (endy - ly)))); endx -= nx, endy -= ny; // SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS endx += sx, endy += sy; umax(maxdis, (ld)sqrt(((endx - lx) * (endx - lx)) + ((endy - ly) * (endy - ly)))); umin(mindis, (ld)sqrt(((endx - lx) * (endx - lx)) + ((endy - ly) * (endy - ly)))); endx -= sx, endy -= sy; // EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE endx += ex, endy += ey; umax(maxdis, (ld)sqrt(((endx - lx) * (endx - lx)) + ((endy - ly) * (endy - ly)))); umin(mindis, (ld)sqrt(((endx - lx) * (endx - lx)) + ((endy - ly) * (endy - ly)))); endx -= ex, endy -= ey; // WWWWWWWWWWWWWWWWWWWWWWWWWWWWW endx += wx, endy += wy; umax(maxdis, (ld)sqrt(((endx - lx) * (endx - lx)) + ((endy - ly) * (endy - ly)))); umin(mindis, (ld)sqrt(((endx - lx) * (endx - lx)) + ((endy - ly) * (endy - ly)))); endx -= wx, endy -= wy; } cout<<fixed<<setprecision(20)<<mindis<<" "; cout<<fixed<<setprecision(20)<<maxdis<<"\n"; return; } int main(){ fastios int t = 1; if(t) solve(); else { cin>>t; while (t--) solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...