제출 #1201085

#제출 시각아이디문제언어결과실행 시간메모리
1201085Marco_EscandonArt Class (IOI13_artclass)C++20
34 / 100
37 ms4168 KiB
#include "artclass.h" #include<bits/stdc++.h> using namespace std; int cnt(int n, int m, int R[500][500], int G[500][500], int B[500][500], int x) { vector<vector<int>> g(n, vector<int>(m, 0)); for (int i = 0; i < n; i++){ for (int j = 0; j < m; j++){ g[i][j] = (int)(0.299 * R[i][j] + 0.587 * G[i][j] + 0.114 * B[i][j] + 0.5); } } vector<vector<bool>> v(n, vector<bool>(m, false)); int c = 0; int dx[4] = { 1, 0, -1, 0 }; int dy[4] = { 0, 1, 0, -1 }; for (int i = 0; i < n; i++){ for (int j = 0; j < m; j++){ if (!v[i][j]) { c++; queue<pair<int, int>> st; st.push({i, j}); v[i][j] = true; while (!st.empty()) { auto [ci, cj] = st.front(); st.pop(); for (int k = 0; k < 4; k++) { int ni = ci + dx[k], nj = cj + dy[k]; if (ni >= 0 && ni < n && nj >= 0 && nj < m && !v[ni][nj]) { if (abs(g[ci][cj] - g[ni][nj]) < x) { v[ni][nj] = true; st.push({ni, nj}); } } } } } } } return c; } int dx[]={1,0,-1,0,1,1,-1,-1}; int dy[]={0,1,0,-1,1,-1,1,-1}; int style(int n, int m, int R[500][500], int G[500][500], int B[500][500]) { double c1=0,c2=0,c3=0; for(int i=1; i<n-1; i++) { for(int j=1; j<m-1; j++) { int temp=0; for(int k=0; k<4; k++) { if(R[i][j]==R[i+dx[k]][j+dy[k]]&&G[i][j]==G[i+dx[k]][j+dy[k]]&&B[i][j]==B[i+dx[k]][j+dy[k]]) temp++; } if(R[i][j]==0&&B[i][j]==0&&G[i][j]==0) c2++; if(R[i][j]==255||B[i][j]==255||G[i][j]==255) c2++; c1+=(temp>=3); } } if(c1*100/(n*m)>0.1) { if((double)cnt(n, m, R, G,B, 20)/(n*m)>0.004||c2!=0) return 1; else return 4; } return 3; }
#Verdict Execution timeMemoryGrader output
Fetching results...