제출 #724122

#제출 시각아이디문제언어결과실행 시간메모리
724122danikoynov벽 칠하기 (APIO20_paint)C++14
0 / 100
1 ms468 KiB
#include "paint.h" #include <bits/stdc++.h> using namespace std; const int maxn = 510, maxk = 1e5 + 10; int dp[maxn], c[maxn], a[maxn], n, m; vector < int > b[maxn], col[maxn]; vector < pair < int, int > > path[maxn]; int minimumInstructions( int N, int M, int K, vector<int> C, vector<int> A, vector<vector<int>> B) { n = N; m = M; for (int i = 0; i < n; i ++) { c[i] = C[i]; } for (int i = 0; i < m; i ++) { a[i] = A[i]; for (int j = 0; j < a[i]; j ++) { b[i].push_back(B[i][j]); col[b[i][j]].push_back(i); } } for (int i = 0; i < N; i ++) dp[i] = 1e9; for (int i = N - 1; i >= 0; i --) { for (int idx : col[c[i]]) path[i].push_back({idx, 1}); } for (int i = N - 1; i >= 0; i --) { /**bool tf = false; for (int st = 0; st < M; st ++) { bool is_pos = true; for (int pos = 0; pos < M; pos ++) { if (col[c[i + pos]][(st + pos) % M] == 0) { ///cout << "break " << pos << endl; is_pos = false; break; } } if (is_pos) { ///cout << i << " " << st << endl; tf = true; break; } }*/ bool tf = false; int pt = 0; for (int j = 0; j < path[i].size(); j ++) { while(pt < path[i + 1].size() && path[i + 1][pt].first <= path[i][j].first) pt ++; if (pt != path[i + 1].size() && path[i + 1][pt].first == path[i][j].first + 1) path[i][j].second = max(path[i][j].second, min(path[i + 1][pt].second + 1, m)); if (path[i][j].first == M - 1) { if (path[i + 1].size() > 0 && path[i + 1][0].first == 0) { path[i][j].second = max(path[i][j].second, min(path[i + 1][0].second + 1, m)); } } if (path[i][j].second == m) tf = true; ///cout << i << " : " << path[i][j].first << " " << path[i][j].second << endl; } if (tf) { for (int j = i + 1; j <= i + M; j ++) dp[i] = min(dp[i], dp[j] + 1); } } if (dp[0] > N) return -1; return dp[0]; }

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

paint.cpp: In function 'int minimumInstructions(int, int, int, std::vector<int>, std::vector<int>, std::vector<std::vector<int> >)':
paint.cpp:66:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   66 |         for (int j = 0; j < path[i].size(); j ++)
      |                         ~~^~~~~~~~~~~~~~~~
paint.cpp:68:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   68 |             while(pt < path[i + 1].size() && path[i + 1][pt].first <= path[i][j].first)
      |                   ~~~^~~~~~~~~~~~~~~~~~~~
paint.cpp:71:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |             if (pt != path[i + 1].size() && path[i + 1][pt].first == path[i][j].first + 1)
      |                 ~~~^~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...