제출 #781071

#제출 시각아이디문제언어결과실행 시간메모리
781071BlagojPaint By Numbers (IOI16_paint)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 105; int n, m; int h[MAXN], v[MAXN]; int a[MAXN][MAXN]; int dp[MAXN][MAXN]; int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> h[i]; } for (int j = 1; j <= m; j++) { cin >> v[j]; } // Initialize the first row and column of the dp table dp[0][0] = 1; for (int i = 1; i <= n; i++) { dp[i][0] = dp[i-1][0] && (h[i] == 0); } for (int j = 1; j <= m; j++) { dp[0][j] = dp[0][j-1] && (v[j] == 0); } // Fill in the rest of the dp table for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (h[i] == 0 && v[j] == 0) { dp[i][j] = dp[i-1][j] || dp[i][j-1]; } else if (h[i] == 0) { int sum = 0; for (int k = j-v[j]; k <= j-1; k++) { sum += a[i][k]; } dp[i][j] = (sum == 0) && dp[i-1][j]; } else if (v[j] == 0) { int sum = 0; for (int k = i-h[i]; k <= i-1; k++) { sum += a[k][j]; } dp[i][j] = (sum == 0) && dp[i][j-1]; } else { int sum1 = 0; for (int k = i-h[i]; k <= i-1; k++) { sum1 += a[k][j]; } int sum2 = 0; for (int k = j-v[j]; k <= j-1; k++) { sum2 += a[i][k]; } dp[i][j] = (sum1 == 0) && (sum2 == 0) && dp[i-1][j] && dp[i][j-1]; } if (dp[i][j]) { if (h[i] > 0) { for (int k = j-v[j]; k <= j-1; k++) { a[i][k] = 1; } } if (v[j] > 0) { for (int k = i-h[i]; k <= i-1; k++) { a[k][j] = 1; } } } } } // Check if the solution is valid if (dp[n][m]) { cout << "Yes" << endl; } else { cout << "No" << endl; } return 0; }

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

/usr/bin/ld: /tmp/ccKEX1rx.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cc5vWWUy.o:paint.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccKEX1rx.o: in function `main':
grader.cpp:(.text.startup+0x20b): undefined reference to `solve_puzzle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status