Submission #1176338

#TimeUsernameProblemLanguageResultExecution timeMemory
1176338slivajanThousands Islands (IOI22_islands)C++20
5 / 100
22 ms4932 KiB
#include "islands.h"
#include <bits/stdc++.h>

using namespace std;

using un = int;
using vuc = vector<un>;
using vol = vector<bool>;


#define REP(i, a, b) for (un i = (un)a; i < (un)b; i++)
#define FEAC(i, a) for (auto&& i : a)
#define vec vector
#define ALL(x) (x).begin(), (x).end()

un N, M;
vuc U, V;

variant<bool, vuc> subtask1(){

  un A = -1;
  un B = -1;
  un C = -1;

  REP(i, 0, M){
    if (U[i] == 0){
      if (A == -1) A = i;
      else if (B == -1) B = i;
    }
    else{
      if (C == -1) C = i;
    }
  }

  if (min({A, B, C}) == -1) return false;
  else return vuc({A, C, B, A, C, B});

}



variant<bool, vuc> find_journey(un _N, un _M, vuc _U, vuc _V) {
  N=_N; M=_M; U=_U; V=_V;

  if (N == 2) return subtask1();

  vec<vuc> spoje(3, vuc(3, -1));
  REP(i, 0, N){
    if ((U[i] < 3) and (V[i] < 3)){
      spoje[U[i]][V[i]] = i;
    }
  }

  bool sub2 = true;
  REP(i, 0, 3) REP(j, 0, 3) if (spoje[i][j] == -1) sub2 = false;

  if (sub2){
    vuc ret = {spoje[0][1], spoje[1][2], spoje[2][0], spoje[0][2], spoje[2][1], spoje[1][0]};
    for (un i = 2; i>= 0; i--) ret.push_back(ret[i]);
    for (un i = 5; i>= 3; i--) ret.push_back(ret[i]);
    return ret;
  }


  return false;

}
#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...