Submission #168907

# Submission time Handle Problem Language Result Execution time Memory
168907 2019-12-17T04:49:31 Z abil Experiments with Gorlum (IZhO13_expgorl) C++14
100 / 100
339 ms 504 KB
#include <bits/stdc++.h>

#define fr first
#define sc second
#define pb push_back
#define mk make_pair
#define all(s) s.begin(),s.end()
//#define int long long

using namespace std;

const int N = (1e6 + 12);
const int mod = (1e9 + 7);
const int INF = (0x3f3f3f3f);

int lx, ly;
double ansmin, ansmax;
double dist(double x, double y){
	return sqrt((x - lx) * (x - lx) + (y - ly) * (y - ly)); 
}

string s;
double gx, gy, x = 0, y = 0;
void check(int val){
	double gxx = gx + val * x, gyy = gy + val * y;
	ansmin = min(ansmin, dist(gxx, gyy));
	ansmax = max(ansmax, dist(gxx, gyy));
	for(int i = 0;i < s.size(); i++){
		if(s[i] == 'L'){
			gxx--;
		}
		if(s[i] == 'R'){
			gxx++;
		}
		if(s[i] == 'F'){
			gyy++;
		}
		if(s[i] == 'B'){
			gyy--;
		}
		ansmin = min(ansmin, dist(gxx, gyy));
		ansmax = max(ansmax, dist(gxx, gyy));
	}
}
main()
{
	int k;
	scanf("%d", &k);
	cin >> s;
	cin >> lx >> ly;
	cin >> gx >> gy;
	ansmin = dist(gx, gy), ansmax = dist(gx, gy);
	for(int i = 0;i < s.size(); i++){
		if(s[i] == 'L'){
			x--;
		}
		if(s[i] == 'R'){
			x++;
		}
		if(s[i] == 'F'){
			y++;
		}
		if(s[i] == 'B'){
			y--;
		}
	}
	for(int i = 0;i <= min(k - 1, 1000); i++){
		check(i);
	}
	for(int i = max(1001, k - 1000);i <= k - 1; i++){
		check(i);
	}
	cout << fixed << setprecision(9) << ansmin << " " << ansmax;
}

Compilation message

expgorl.cpp: In function 'void check(int)':
expgorl.cpp:28:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0;i < s.size(); i++){
                ~~^~~~~~~~~~
expgorl.cpp: At global scope:
expgorl.cpp:45:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main()
      ^
expgorl.cpp: In function 'int main()':
expgorl.cpp:53:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0;i < s.size(); i++){
                ~~^~~~~~~~~~
expgorl.cpp:48:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &k);
  ~~~~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 20 ms 376 KB Output is correct
2 Correct 36 ms 256 KB Output is correct
3 Correct 43 ms 376 KB Output is correct
4 Correct 48 ms 376 KB Output is correct
5 Correct 24 ms 376 KB Output is correct
6 Correct 28 ms 504 KB Output is correct
7 Correct 47 ms 376 KB Output is correct
8 Correct 46 ms 476 KB Output is correct
9 Correct 199 ms 368 KB Output is correct
10 Correct 305 ms 376 KB Output is correct
11 Correct 169 ms 376 KB Output is correct
12 Correct 330 ms 400 KB Output is correct
13 Correct 334 ms 376 KB Output is correct
14 Correct 256 ms 376 KB Output is correct
15 Correct 255 ms 376 KB Output is correct
16 Correct 156 ms 376 KB Output is correct
17 Correct 154 ms 504 KB Output is correct
18 Correct 338 ms 476 KB Output is correct
19 Correct 339 ms 380 KB Output is correct
20 Correct 339 ms 376 KB Output is correct