Submission #1201641

#TimeUsernameProblemLanguageResultExecution timeMemory
1201641tralalero_tralalaFinding Routers (IOI20_routers)C++20
100 / 100
1 ms584 KiB
#include "routers.h"
#include <bits/stdc++.h>
#define _ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define fore(i,a,b) for(lli i = (a), abcdxd = (b); i < abcdxd; i++)
#define f first
#define s second
#define ENDL '\n'
#define pb push_back
#define sz(s) lli((s).size())
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
using namespace std;
typedef int lli;
// typedef long long LLI;
typedef pair<lli,lli> ii;
typedef vector<lli> vi;
typedef vector<ii> vii;
typedef long double ld;
#define deb(x) cout << #x << ": " << x << endl;
#define BIGLLI __int128
typedef vector<vi> mtrx;

const lli INF = 1e9 + 12;
const lli N = 1e5 + 5;

lli p[N];

// lli st = 0;

void dfs(lli l, lli r, lli lid, lli rid){
  // cout << l << ' ' << r << endl;
  p[lid] = max(p[lid], l);
  p[rid] = max(p[rid], r);
  // st++;
  if (lid == rid) return;
  if ((l + 1) >= r) return;
  assert(l < r);
  lli m = (r + l) / 2;
  lli mid = use_detector(m);
  dfs(l, m, lid, mid);
  // lli sid = use_detector(m+1);
  dfs(m, r, mid, rid);
}

vector<int> find_routers(int l, int n, int q) {
  // cout << "ini :)" << endl;
  for (auto & i : p) i = -INF;
  dfs(0, l, 0, n-1);
  // deb(st);
  vi ans(n);
  ans[0] = 0;
  // fore(i,0,n) cout << p[i] << endl;
  fore(i,1,n){
    ans[i] = ans[i-1] + (2 * (p[i - 1] - ans[i - 1]));
  }
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...