Submission #301428

#TimeUsernameProblemLanguageResultExecution timeMemory
301428joseacazComparing Plants (IOI20_plants)C++17
0 / 100
103 ms8312 KiB
#include "plants.h" #include <bits/stdc++.h> #define pb push_back #define all(x) x.begin(), x.end() using namespace std; typedef long long ll; typedef vector<int> vi; const int MAXN = 5e3 + 5; int N, k, vis[MAXN], memo[MAXN][MAXN], MP[MAXN][MAXN], in[MAXN], pos[MAXN]; vi r, Graph[MAXN]; void sub(int idx) { for(int i = 1; i < k; i++) { int id = ((idx - i)%N + N)%N; if(r[id] > 0) { r[id]--; if(r[id] == 0 && !vis[id] && !MP[idx][id]) { //Graph[idx].pb(id); in[id]++; MP[idx][id] = 1; } } } } int getnext(int idx) { for(int i = 1; i < N; i++) { int id = ((idx + i)%N + N)%N; if(i < k && !vis[id] && !MP[idx][id]) { //Graph[idx].pb(id); //MP[idx][id] = 1; in[id]++; } if(r[id] == 0 && !vis[id]) return id; } return idx; } /* void dfs(int root, int node) { memo[root][node] = 1; for(auto i : Graph[node]) if(i != node && !memo[root][i]) dfs(root, i); } */ void topo() { queue<int> Q; for(int i = 0; i < N; i++) if(in[i] == 0) Q.push(i); int cnt = 0; while(!Q.empty()) { int node = Q.front(); Q.pop(); pos[node] = cnt++; for(auto i : Graph[node]) { if(in[i] > 0) in[i]--; if(in[i] == 0) Q.push(i); } } } void init(int _k, vi _r) { k = _k; swap(r, _r); N = r.size(); int maxIdx = 0; for(int i = 0; i < N; i++) { if(r[i] != 0) continue; int maxim = 1; for(int j = 1; j < k; j++) { int id = ((i - j)%N + N)%N; if(r[id] == 0) maxim = 0; } if(maxim) maxIdx = i; } int cnt = 0; while(!vis[maxIdx]) { vis[maxIdx] = 1; sub(maxIdx); maxIdx = getnext(maxIdx); pos[maxIdx] = cnt++; } //topo(); return; } int compare_plants(int x, int y) { if(pos[x] < pos[y]) return 1; else if(pos[y] < pos[x]) return -1; return 0; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...