답안 #935915

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
935915 2024-02-29T18:35:07 Z EJIC_B_KEDAX 식물 비교 (IOI20_plants) C++17
0 / 100
4000 ms 7260 KB
#include <bits/stdc++.h>
 
using ll = long long;
 
using namespace std;
 
const int N = 5050;
vector<int> g[N];
int used[N], tmp1[N], tmp2[N];
int clc[N][N];

void dfs(int s, int d) {
	clc[d][s] = 1;
	for (int i : g[s]) {
		if (!used[i]) {
			dfs(i, d);
		}
	}
}
 
void init(int k, vector<int> r) {
    int n = r.size();
    assert(n <= 300);
    int ok = 0, last, lev = n, iter = 0;
    for (int i = 0; i < n; i++) {
    	tmp1[i] = -1;
    	tmp2[i] = -1;
    }
    while (ok < n) {
        last = -k;
        for (int i = n - 1; i > n - k; i--) {
            if (!r[i]) {
                last = i - n;
                break;
            }
        }
        vector<int> nw = r;
        for (int i = 0; i < n; i++) {
            if (!r[i]) {
                if (i - last >= k) {
                	if (tmp1[i] != -1) {
                		g[tmp1[i]].push_back(i);
                	}
                	if (tmp2[i] != -1) {
                		g[tmp2[i]].push_back(i);
                	}
                    ok++;
                    for (int j = i - 1; j > i - k; j--) {
                        if (j >= 0) {
                            nw[j]--;
                            tmp1[j] = i;
                        } else {
                            nw[j + n]--;
                            tmp1[j + n] = i;
                        }
                    }
                    for (int j = i + 1; j < i + k; j++) {
                        if (j < n) {
                            tmp2[j] = i;
                        } else {
                            tmp2[j - n] = i;
                        }
                    }
                    nw[i] = INT32_MAX / 2;
                }
                last = i;
            }
        }
        swap(nw, r);
        iter++;
        // assert(iter < n + 10);
    }
    for (int i = 0; i < n; i++) {
    	for (int j = 0; j < n; j++) {
    		used[j] = 0;
    	}
    	dfs(i, i);
    }
}
 
int compare_plants(int x, int y) {
    if (clc[y][x]) {
        return -1;
    }
    return clc[x][y];
}

Compilation message

plants.cpp: In function 'void init(int, std::vector<int>)':
plants.cpp:24:23: warning: unused variable 'lev' [-Wunused-variable]
   24 |     int ok = 0, last, lev = n, iter = 0;
      |                       ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 2652 KB Output is correct
6 Correct 41 ms 5716 KB Output is correct
7 Runtime error 33 ms 5716 KB Execution killed with signal 6
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Execution timed out 4019 ms 348 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Execution timed out 4019 ms 348 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 2652 KB Output is correct
3 Runtime error 32 ms 5400 KB Execution killed with signal 6
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 2652 KB Output is correct
6 Correct 2 ms 2652 KB Output is correct
7 Correct 12 ms 7260 KB Output is correct
8 Execution timed out 4078 ms 1116 KB Time limit exceeded
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 2652 KB Output is correct
5 Runtime error 4 ms 860 KB Execution killed with signal 6
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 2652 KB Output is correct
6 Correct 41 ms 5716 KB Output is correct
7 Runtime error 33 ms 5716 KB Execution killed with signal 6
8 Halted 0 ms 0 KB -