# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
168710 | ho94949 | Cultivation (JOI17_cultivation) | C++17 | 910 ms | 504 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
uint64_t B[41];
int main()
{
int R, C, N;
scanf("%d%d%d", &R, &C, &N);
assert(R<=40&&C<=40);
for(int i=0; i<N; ++i)
{
int u, v; scanf("%d%d", &u, &v);
B[u-1] |= (1ull<<(v-1));
}
int ans = 202020;
for(int w=0; w<C; ++w) for(int e=0; e<C; ++e) for(int n=0; n<R; ++n) for(int s=0; s<R; ++s)
{
if(w+e>=C || n+s>=R) continue;
uint64_t A[41]; memcpy(A, B, sizeof A);
uint64_t tar = (1ull<<C)-1;
for(int i=0; i<w; ++i)
for(int j=0; j<R; ++j)
A[j] |= (A[j]>>1)&tar;
for(int i=0; i<e; ++i)
for(int j=0; j<R; ++j)
A[j] |= (A[j]<<1)&tar;
for(int i=0; i<n; ++i)
for(int j=0; j<R-1; ++j)
A[j] |= A[j+1];
for(int i=0; i<s; ++i)
for(int j=R-2; j>=0; --j)
A[j+1] |= A[j];
/* printf("%d %d %d %d\n", w, e, n, s);
for(int i=0; i<R; ++i,puts(""))
for(int j=0; j<C; ++j)
printf("%d", !!(A[i]&(1<<j)));*/
for(int i=0; i<R; ++i)
tar &= A[i];
if(tar == (1ull<<C)-1)
ans = min(ans, w+e+n+s);
}
printf("%d\n", ans);
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |