Submission #381644

#TimeUsernameProblemLanguageResultExecution timeMemory
381644ritul_kr_singhGame (IOI14_game)C++17
15 / 100
2 ms512 KiB
#include "game.h" #include "bits/stdc++.h" using namespace std; vector<int> e; int n; int find(int u){ return e[u] < 0 ? u : e[u] = find(e[u]); } int sz(int u){ return -e[find(u)]; } void unite(int u, int v){ u = find(u), v = find(v); if(u==v) return; if(e[u] > e[v]) swap(u, v); e[u] += e[v], e[v] = u; } int asked[1501][1501]; void initialize(int N){ n = N; e.assign(n+1, -1); for(int i=0; i<=n; ++i) for(int j=0; j<=n; ++j) asked[i][j] = 0; } int hasEdge(int u, int v){ int x = find(u), y = find(v); if(x>y) swap(x, y); ++asked[x][y]; if(asked[x][y]==sz(u)*sz(v)){ unite(u, v); return 1; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...