Submission #1089176

# Submission time Handle Problem Language Result Execution time Memory
1089176 2024-09-16T06:54:51 Z vjudge1 Growing Vegetable is Fun 3 (JOI19_ho_t3) C++17
20 / 100
500 ms 604 KB
//#pragma GCC optimize("O3,unroll-loops")
//#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#define ll long long
#define F first
#define S second
#define ull unsigned long long
#define db double
#define ldb long double
#define pb push_back
#define pf push_front
#define ppb pop_back
#define ppf pop_front
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define ordered_set tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update>
#define all(x) x.begin(), x.end()

const int mod = 1e9 + 7;
const int N = 35001;

using namespace std;
using namespace __gnu_pbds;

ll n, m, k, a, b, c, d, e, f, ans = 1e9, sum;
string s;
vector <ll> r, g, y;

void rec (ll a, ll b, ll c, string t){
	if (t.size() == n){
		sum = 0;
//		cout << t << ' ' << s << '\n';
		for (int i = 0; i < n; i++){
			for (int j = i; j < n; j++){
				if (s[i] == t[j]){
					a = j;
					break;
				}
			}
			while (a != i){
				swap (t[a], t[a - 1]);
				a--;
				sum++;
			}
//			cout << sum << ' ';
		}
		ans = min (ans, sum);
		return;
	}
	if (t.size() == 0){
		if (a){
			rec (a - 1, b, c, t + "R");
		}
		if (b){
			rec (a, b - 1, c, t + "G");
		}
		if (c){
			rec (a, b, c - 1, t + "Y");
		}
	}
	else{
		if (t[t.size() - 1] == 'R'){
			if (b){
				rec (a, b - 1, c, t + "G");
			}
			if (c){
				rec (a, b, c - 1, t + "Y");
			}
		}
		if (t[t.size() - 1] == 'G'){
			if (a){
				rec (a - 1, b, c, t + "R");
			}
			if (c){
				rec (a, b, c - 1, t + "Y");
			}
		}
		if (t[t.size() - 1] == 'Y'){
			if (a){
				rec (a - 1, b, c, t + "R");
			}
			if (b){
				rec (a, b - 1, c, t + "G");
			}
		}
	}
}

signed main (){
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin >> n >> s;
	for (int i = 0; i < s.size(); i++){
		if (s[i] == 'R'){
			a++;
		}
		else if (s[i] == 'G'){
			b++;
		}
		else{
			c++;
		}
	}
	if (a > b + c + 1 || b > a + c + 1 || c > a + b + 1){
		cout << "-1";
		return 0;
	}
	rec (a, b, c, "");
	cout << ans;
}

Compilation message

joi2019_ho_t3.cpp: In function 'void rec(long long int, long long int, long long int, std::string)':
joi2019_ho_t3.cpp:31:15: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   31 |  if (t.size() == n){
      |      ~~~~~~~~~^~~~
joi2019_ho_t3.cpp: In function 'int main()':
joi2019_ho_t3.cpp:94:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   94 |  for (int i = 0; i < s.size(); i++){
      |                  ~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 456 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 2 ms 452 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 3 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 456 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 2 ms 452 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 3 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Execution timed out 1065 ms 348 KB Time limit exceeded
19 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 604 KB Output is correct
3 Correct 0 ms 604 KB Output is correct
4 Correct 1 ms 604 KB Output is correct
5 Correct 0 ms 600 KB Output is correct
6 Correct 0 ms 604 KB Output is correct
7 Correct 0 ms 604 KB Output is correct
8 Correct 0 ms 604 KB Output is correct
9 Correct 0 ms 604 KB Output is correct
10 Correct 1 ms 604 KB Output is correct
11 Correct 1 ms 604 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 604 KB Output is correct
14 Correct 1 ms 604 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 456 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 2 ms 452 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 3 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Execution timed out 1065 ms 348 KB Time limit exceeded
19 Halted 0 ms 0 KB -