제출 #394328

#제출 시각아이디문제언어결과실행 시간메모리
394328Theo830자동 인형 (IOI18_doll)C++17
6 / 100
140 ms13532 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll INF = 1e18+7;
ll MOD = 998244353;
typedef pair<ll,ll> ii;
#define iii pair<ll,ii>
#define f(i,a,b) for(ll i = a;i < b;i++)
#define pb push_back
#define vll vector<ll>
#define F first
#define S second
#define all(x) (x).begin(), (x).end()
///I hope I will get uprating and don't make mistakes
///I will never stop programming
///sqrt(-1) Love C++
///Please don't hack me
///@TheofanisOrfanou Theo830
///Think different approaches (bs,dp,greedy,graphs,shortest paths,mst)
///Stay Calm
///Look for special cases
///Beware of overflow and array bounds
///Think the problem backwards
///Training
#include "doll.h"
void create_circuit(int M, std::vector<int> A) {
  int n = A.size();
  vector<int> C(M + 1);
  f(i,0,M+1){
      C[i] = 0;
  }
  C[0] = A[0];
  ll pos = -1;
  vector<int> X, Y;
  vll mp[M+5];
  set<ll>ex;
  A.pb(0);
  f(i,0,n){
    mp[A[i]].pb(A[i+1]);
  }
  f(i,1,n+1){
      if(mp[A[i-1]].size() == 1){
        C[A[i-1]] = A[i];
      }
      else{
        C[A[i-1]] = pos;
        pos--;
        X.pb(mp[A[i-1]][0]);
        Y.pb(mp[A[i-1]][1]);
      }
  }
  answer(C, X, Y);
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...