Submission #136885

# Submission time Handle Problem Language Result Execution time Memory
136885 2019-07-26T12:36:41 Z SirCeness Growing Vegetable is Fun 3 (JOI19_ho_t3) C++14
5 / 100
500 ms 52820 KB
#include <bits/stdc++.h>

using namespace std;
#define mod 1000000007
#define mp make_pair
#define pb push_back
#define bas(x) #x << ": " << x << " "
#define prarr(x, n) cout << #x << ": "; for (int qsd = 0; qsd < n; qsd++) cout << x[qsd] << " "; cout << endl;
#define prarrv(x) cout << #x << ": "; for (int qsd = 0; qsd < (int)x.size(); qsd++) cout << x[qsd] << " "; cout << endl;
#define ppair(x) "(" << x.first << ", " << x.second << ")"
#define inside sl<=l&&r<=sr
#define outside sr<l||r<sl

typedef long long ll;

string s;

int dist(string str){
	string ana = s;
	ll ans = 0;
	int say = 0;
	for (int i = str.size()-1; i >= 0; i--){
		for (int j = ana.size()-1; j >= 0; j--){
			if (ana[j] == str[i]){
				ana[j] = 'x';
				say++;
				break;
			} else if (ana[j] != 'x') ans++;
		}
	}
	if (say != str.size()) return 1000000000;
	return ans;
}

string dp[65][65][65][3];

string f(int r, int g, int y, int last){
	//cout << "f(" << r << ", " << g << ", " << y << ", " << last << ")" << endl;
	if (dp[r][g][y][last].size() && dp[r][g][y][last][0] != '-') return dp[r][g][y][last];
	string ans = "-";
	int minn = 1000000000;
	if (r > 0 && last != 0){
		string ret = f(r-1, g, y, 0);
		//if (ret.size() && ret[0] == '-');
		//else {
		ret = "R" + ret;
		int d = dist(ret);
		if (minn > d){
			minn = d;
			ans = ret;
		}
		//}
	} 
	if (g > 0 && last != 1){
		string ret = f(r, g-1, y, 1);
		ret = "G" + ret;
		int d = dist(ret);
		if (minn > d){
			minn = d;
			ans = ret;
		}
	} 
	if (y > 0 && last != 2){
		string ret = f(r, g, y-1, 2);
		ret = "Y" + ret;
		int d = dist(ret);
		if (minn > d){
			minn = d;
			ans = ret;
		}
	}
	if (g == 0 && r == 0 && y == 0){
		return dp[r][g][y][last] = "";
	} 
	return dp[r][g][y][last] = ans;

}

int main(){
	//freopen("in", "r", stdin);
	//freopen("out", "w", stdout);
	
	int n;
	cin >> n;
	cin >> s;

	for (int i1 = 0; i1 < 65; i1++)
		for (int i2 = 0; i2 < 65; i2++)
			for (int i3 = 0; i3 < 65; i3++)
				for (int i4 = 0; i4 < 3; i4++)
					dp[i1][i2][i3][i4] = "-";

	int r = 0, g = 0, y = 0;
	for (int i = 0; i < n; i++){
		r += s[i] == 'R';
		g += s[i] == 'G';
		y += s[i] == 'Y';
	}
	string ans = f(r, g, y, -1);
	//cout << ans << endl;
	ll sonuc = dist(ans);
	if (sonuc == 1000000000) cout << -1 << endl;
	else cout << sonuc << endl; 

}

Compilation message

joi2019_ho_t3.cpp: In function 'int dist(std::__cxx11::string)':
joi2019_ho_t3.cpp:31:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  if (say != str.size()) return 1000000000;
      ~~~~^~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 34 ms 26104 KB Output is correct
2 Correct 34 ms 26104 KB Output is correct
3 Correct 33 ms 26104 KB Output is correct
4 Correct 35 ms 26192 KB Output is correct
5 Correct 35 ms 26108 KB Output is correct
6 Correct 33 ms 26104 KB Output is correct
7 Correct 34 ms 26104 KB Output is correct
8 Correct 34 ms 26104 KB Output is correct
9 Correct 34 ms 26104 KB Output is correct
10 Correct 34 ms 26104 KB Output is correct
11 Correct 34 ms 26104 KB Output is correct
12 Correct 44 ms 26104 KB Output is correct
13 Correct 43 ms 26104 KB Output is correct
14 Correct 34 ms 26104 KB Output is correct
15 Correct 34 ms 26108 KB Output is correct
16 Correct 34 ms 26104 KB Output is correct
17 Correct 35 ms 26104 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 34 ms 26104 KB Output is correct
2 Correct 34 ms 26104 KB Output is correct
3 Correct 33 ms 26104 KB Output is correct
4 Correct 35 ms 26192 KB Output is correct
5 Correct 35 ms 26108 KB Output is correct
6 Correct 33 ms 26104 KB Output is correct
7 Correct 34 ms 26104 KB Output is correct
8 Correct 34 ms 26104 KB Output is correct
9 Correct 34 ms 26104 KB Output is correct
10 Correct 34 ms 26104 KB Output is correct
11 Correct 34 ms 26104 KB Output is correct
12 Correct 44 ms 26104 KB Output is correct
13 Correct 43 ms 26104 KB Output is correct
14 Correct 34 ms 26104 KB Output is correct
15 Correct 34 ms 26108 KB Output is correct
16 Correct 34 ms 26104 KB Output is correct
17 Correct 35 ms 26104 KB Output is correct
18 Execution timed out 1083 ms 26232 KB Time limit exceeded
19 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 41 ms 26232 KB Output is correct
2 Runtime error 84 ms 52820 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 34 ms 26104 KB Output is correct
2 Correct 34 ms 26104 KB Output is correct
3 Correct 33 ms 26104 KB Output is correct
4 Correct 35 ms 26192 KB Output is correct
5 Correct 35 ms 26108 KB Output is correct
6 Correct 33 ms 26104 KB Output is correct
7 Correct 34 ms 26104 KB Output is correct
8 Correct 34 ms 26104 KB Output is correct
9 Correct 34 ms 26104 KB Output is correct
10 Correct 34 ms 26104 KB Output is correct
11 Correct 34 ms 26104 KB Output is correct
12 Correct 44 ms 26104 KB Output is correct
13 Correct 43 ms 26104 KB Output is correct
14 Correct 34 ms 26104 KB Output is correct
15 Correct 34 ms 26108 KB Output is correct
16 Correct 34 ms 26104 KB Output is correct
17 Correct 35 ms 26104 KB Output is correct
18 Execution timed out 1083 ms 26232 KB Time limit exceeded
19 Halted 0 ms 0 KB -