Submission #99025

# Submission time Handle Problem Language Result Execution time Memory
99025 2019-02-28T05:55:30 Z 크리(#2856, kriii) Growing Vegetable is Fun 3 (JOI19_ho_t3) C++17
15 / 100
5 ms 1280 KB
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;

vector<int> pos[3];
int N; char S[404]; int T[404];
int X,C[3000000][3],D[3000000][3];

int tr(int i, int j, int k)
{
	return (i * (pos[1].size() + 1) + j) * (pos[2].size() + 1) + k;
}

int main()
{
	scanf ("%d",&N);
	scanf ("%s",S);
	for (int i=0;i<N;i++){
		if (S[i] == 'R') T[i] = 0;
		if (S[i] == 'G') T[i] = 1;
		if (S[i] == 'Y') T[i] = 2;
		pos[T[i]].push_back(i);
	}

	for (int i=0;i<=pos[0].size();i++) for (int j=0;j<=pos[1].size();j++) for (int k=0;k<=pos[2].size();k++){
		C[X][0] = i; C[X][1] = j; C[X][2] = k;
		D[X][0] = D[X][1] = D[X][2] = 0x7fffff;
		X++;
	}

	D[0][0] = D[0][1] = D[0][2] = 0;
	for (int x=0;x<X;x++){
		int c[3] = {C[x][0], C[x][1], C[x][2]};
		for (int k=0;k<3;k++) if (c[k] < pos[k].size()){
			int v = abs(c[0]+c[1]+c[2]-pos[k][c[k]]);

			c[k]++;
			int t = tr(c[0],c[1],c[2]);
			for (int l=0;l<3;l++) if (l != k){
				if (D[x][l] == 0x7fffff) continue;
				int d = D[x][l] + v;
				if (D[t][k] > d)
					D[t][k] = d;
			}
			c[k]--;
		}
	}

	int ans = min({D[X-1][0],D[X-1][1],D[X-1][2]});
	if (ans == 0x7fffff) ans = -1;
	else ans /= 2;
	printf ("%d\n",ans);

	return 0;
}

Compilation message

joi2019_ho_t3.cpp: In function 'int main()':
joi2019_ho_t3.cpp:26:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i=0;i<=pos[0].size();i++) for (int j=0;j<=pos[1].size();j++) for (int k=0;k<=pos[2].size();k++){
               ~^~~~~~~~~~~~~~~
joi2019_ho_t3.cpp:26:51: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i=0;i<=pos[0].size();i++) for (int j=0;j<=pos[1].size();j++) for (int k=0;k<=pos[2].size();k++){
                                                  ~^~~~~~~~~~~~~~~
joi2019_ho_t3.cpp:26:86: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i=0;i<=pos[0].size();i++) for (int j=0;j<=pos[1].size();j++) for (int k=0;k<=pos[2].size();k++){
                                                                                     ~^~~~~~~~~~~~~~~
joi2019_ho_t3.cpp:35:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int k=0;k<3;k++) if (c[k] < pos[k].size()){
                             ~~~~~^~~~~~~~~~~~~~~
joi2019_ho_t3.cpp:17:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf ("%d",&N);
  ~~~~~~^~~~~~~~~
joi2019_ho_t3.cpp:18:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf ("%s",S);
  ~~~~~~^~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 3 ms 384 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 256 KB Output is correct
6 Correct 3 ms 384 KB Output is correct
7 Correct 2 ms 256 KB Output is correct
8 Correct 3 ms 384 KB Output is correct
9 Correct 2 ms 384 KB Output is correct
10 Correct 2 ms 256 KB Output is correct
11 Incorrect 3 ms 256 KB Output isn't correct
12 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 3 ms 384 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 256 KB Output is correct
6 Correct 3 ms 384 KB Output is correct
7 Correct 2 ms 256 KB Output is correct
8 Correct 3 ms 384 KB Output is correct
9 Correct 2 ms 384 KB Output is correct
10 Correct 2 ms 256 KB Output is correct
11 Incorrect 3 ms 256 KB Output isn't correct
12 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 384 KB Output is correct
2 Correct 3 ms 1280 KB Output is correct
3 Correct 3 ms 1280 KB Output is correct
4 Correct 4 ms 1280 KB Output is correct
5 Correct 4 ms 1280 KB Output is correct
6 Correct 3 ms 1280 KB Output is correct
7 Correct 5 ms 1280 KB Output is correct
8 Correct 1 ms 1152 KB Output is correct
9 Correct 4 ms 1280 KB Output is correct
10 Correct 5 ms 1280 KB Output is correct
11 Correct 5 ms 1280 KB Output is correct
12 Correct 2 ms 640 KB Output is correct
13 Correct 2 ms 768 KB Output is correct
14 Correct 3 ms 896 KB Output is correct
15 Correct 0 ms 1280 KB Output is correct
16 Correct 3 ms 1280 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 3 ms 384 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 256 KB Output is correct
6 Correct 3 ms 384 KB Output is correct
7 Correct 2 ms 256 KB Output is correct
8 Correct 3 ms 384 KB Output is correct
9 Correct 2 ms 384 KB Output is correct
10 Correct 2 ms 256 KB Output is correct
11 Incorrect 3 ms 256 KB Output isn't correct
12 Halted 0 ms 0 KB -