제출 #1076097

#제출 시각아이디문제언어결과실행 시간메모리
1076097Boas수천개의 섬 (IOI22_islands)C++17
10 / 100
86 ms12828 KiB
#include "islands.h"

#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define loop(x, i) for (int i = 0; i < x; i++)
#define rev(x, i) for (int i = (int)x - 1; i >= 0; i--)
#define ALL(x) begin(x), end(x)
#define sz(x) (int)x.size()

typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef vector<int> vi;
typedef vector<vi> vvi;

variant<bool, vi> find_journey(int N, int M, vi U, vi V)
{
  if (N == 2)
  {
    vi heen, terug;
    loop(M, i)
    {
      if (U[i] == 0)
        heen.pb(i);
      else
        terug.pb(i);
    }
    if (sz(heen) >= 2 && sz(terug) >= 1)
    {
      return vi{heen[0], terug[0], heen[1], heen[0], terug[0], heen[1]};
    }
    return false;
  }
  else
  {
    map<ii, int> ix;
    loop(M, i) ix[{U[i], V[i]}] = i;
    vi a = {ix[{0, 1}], ix[{1, 2}], ix[{2, 0}]};
    vi b = {ix[{0, 2}], ix[{2, 1}], ix[{1, 0}]};
    vi res;
    for (int p : a)
      res.pb(p);
    for (int p : b)
      res.pb(p);
    rev(3, i) res.pb(a[i]);
    rev(3, i) res.pb(b[i]);
    return res;
  }
}
#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...