Submission #212630

#TimeUsernameProblemLanguageResultExecution timeMemory
212630MarcoMeijerWerewolf (IOI18_werewolf)C++14
15 / 100
424 ms28256 KiB
#include "werewolf.h" #include <bits/stdc++.h> using namespace std; //macros typedef long long ll; typedef pair<int, int> ii; typedef tuple<int, int, int> iii; typedef vector<int> vi; typedef vector<ii> vii; typedef vector<iii> viii; typedef vector<ll> vll; #define REP(a,b,c) for(int a=int(b); a<int(c); a++) #define RE(a,c) REP(a,0,c) #define RE1(a,c) REP(a,1,c+1) #define REI(a,b,c) REP(a,b,c+1) #define REV(a,b,c) for(int a=int(c-1); a>=int(b); a--) #define INF 1e9 #define pb push_back #define fi first #define se second #define sz size() mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int MX=6000; vi check_validity(int N, vi X, vi Y, vi S, vi E, vi L, vi R) { bitset<MX> visited[2]; vi adj[MX]; int M = X.size(); RE(i,M) { adj[X[i]].pb(Y[i]); adj[Y[i]].pb(X[i]); } int Q = S.size(); vi A(Q); RE(i,Q) { RE(j,2) visited[j].reset(); queue<ii> q; q.push({S[i],0}); visited[0][S[i]]=1; while(!q.empty()) { ii p = q.front(); q.pop(); int u = p.fi; int w = p.se; for(int v : adj[u]) { if(visited[w][v] ) continue; if(!w && v < L[i]) continue; if( w && v > R[i]) continue; visited[w][v] = 1; q.push({v,w}); } if(!visited[1][u] && L[i] <= u && u <= R[i]) { visited[1][u] = 1; q.push({u,1}); } } A[i] = visited[1][E[i]]; } return A; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...