Submission #120121

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
1201212019-06-23 12:44:41MeloricWerewolf (IOI18_werewolf)C++14
100 / 100
2167 ms161096 KiB
#include "werewolf.h"
#include <bits/stdc++.h>
#define pb push_back
#define pii pair<int, int>
#define X first
#define Y second
#define ub upper_bound
#define lb lower_bound
using namespace std;
/*
- Make Reachability Tree by sorting indexes and DSU
- Subtree of Vertex includes all Vertices reachable from that vertex
- Connect new vertex to parent of new connections
- Then use binary lifting to find highest vertex in subtree with val <= to query
- Finally use euler tour pre/ post vals to find rectangle needed to be queried
- Offline + Fenwick Tree to check if there is a vertex/point in rectangle
*/
struct disj{
vector<int> par;
disj(int n){
for(int i = 0; i<n; i++)par.pb(i);
}
int fi(int a){return (a == par[a]) ? a : par[a] = fi(par[a]);}
void me(int a, int b){
a = fi(a);
b = fi(b);
par[b] = a;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Compilation message (stderr)

werewolf.cpp: In member function 'void ft::upd(int, int)':
werewolf.cpp:46:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(; a < fen.size(); a+=a&(-a))fen[a]+=b;
               ~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...