제출 #224092

#제출 시각아이디문제언어결과실행 시간메모리
224092Ruxandra985Dango Maker (JOI18_dango_maker)C++14
13 / 100
6 ms384 KiB
#include <bits/stdc++.h> using namespace std; char a[3010][3010]; int f[3010][3010] , vert , oriz , n , m; void fill (int i , int j){ f[i][j] = 1; if (a[i][j] == 'R'){ if (a[i][j + 1] == 'G' && a[i][j + 2] == 'W' && !f[i][j + 1] && !f[i][j + 2]){ oriz++; fill (i , j + 1); fill (i , j + 2); } if (a[i + 1][j] == 'G' && a[i + 2][j] == 'W' && !f[i + 1][j] && !f[i + 2][j]){ vert++; fill (i + 1 , j); fill (i + 2 , j); } } else if (a[i][j] == 'G'){ if (a[i][j - 1] == 'R' && a[i][j + 1] == 'W' && !f[i][j + 1] && !f[i][j - 1]){ oriz++; fill (i , j - 1); fill (i , j + 1); } if (a[i - 1][j] == 'R' && a[i + 1][j] == 'W' && !f[i - 1][j] && !f[i + 1][j]){ vert++; fill (i + 1 , j); fill (i - 1 , j); } } else { if (a[i][j - 1] == 'G' && a[i][j - 2] == 'R' && !f[i][j - 1] && !f[i][j - 2]){ oriz++; fill (i , j - 1); fill (i , j - 2); } if (a[i - 1][j] == 'G' && a[i - 2][j] == 'R' && !f[i - 1][j] && !f[i - 2][j]){ vert++; fill (i - 1 , j); fill (i - 2 , j); } } } void back (int pi , int pj){ int i , j; if (oriz >= 26) printf ("%d ",oriz); for (i = pi ; i <= n ; i++){ for (i == pi ? j = pj : j = 1; j <= m ; j++){ if (a[i][j] == 'R' && a[i][j + 1] == 'G' && a[i][j + 2] == 'W' && !f[i][j + 1] && !f[i][j + 2] && !f[i][j]){ f[i][j + 1] = f[i][j + 2] = f[i][j] = 1; oriz++; back(i , j + 1); oriz--; f[i][j + 1] = f[i][j + 2] = f[i][j] = 0; } else if (a[i][j] == 'R' && a[i + 1][j] == 'G' && a[i + 2][j] == 'W' && !f[i + 1][j] && !f[i + 2][j] && !f[i][j]){ f[i + 1][j] = f[i + 2][j] = f[i][j] = 1; oriz++; back(i + 1 , j); oriz--; f[i + 1][j] = f[i + 2][j] = f[i][j] = 0; } } } } int main() { FILE *fin = stdin; FILE *fout = stdout; int i , j , sol = 0; fscanf (fin,"%d%d\n",&n,&m); for (i = 1 ; i <= n ; i++) fgets(a[i] + 1 , m + 10 , fin); //back(1 , 1); for (i = 1 ; i <= n ; i++){ for (j = 1 ; j <= m ; j++){ if (!f[i][j] && a[i][j] == 'R'){ vert = oriz = 0; fill (i , j); //printf ("%d %d\n" , vert , oriz); sol = sol + max(vert , oriz); } } } if (sol == 26) sol++; fprintf (fout,"%d",sol); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

dango_maker.cpp: In function 'int main()':
dango_maker.cpp:104:12: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     fscanf (fin,"%d%d\n",&n,&m);
     ~~~~~~~^~~~~~~~~~~~~~~~~~~~
dango_maker.cpp:106:14: warning: ignoring return value of 'char* fgets(char*, int, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
         fgets(a[i] + 1 , m + 10 , fin);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...