제출 #299682

#제출 시각아이디문제언어결과실행 시간메모리
299682Dremix10Mechanical Doll (IOI18_doll)C++17
6 / 100
82 ms6932 KiB
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pi;
#define F first
#define S second
#define endl '\n'
#define all(x) (x).begin(),(x).end()
const ll INF = 1e18;
const int N = 3e5+1;


void create_circuit(int m, vector<int> a) {
    int n = a.size();
    /// each trigger can only go to one place
    /// so in the case of {1,2,1} 1 can't go to 2 because
    /// the second time we get to 1 we will go to 2 which
    /// shouldn't happen

    int i,s = 1;
    vector<int> ans(m+1);
    vector<int> x,y;

    bool v[m+1]={};
    int cnt[m+1]={};

    for(auto x : a)
        cnt[x]++;

    ans[0] = a[0];
    v[0] = true;
    a.push_back(0);
    for(i=0;i<n;i++){
        int curr = a[i];
        if(cnt[curr]==1){
            ans[curr] = a[i+1];
            v[curr] = true;
        }
        else{
            if(!v[curr]){
                ans[curr] = -s;
                s++;
                v[curr] = true;
                x.push_back(a[i+1]);
                y.push_back(0);
            }
            else{
                y[-ans[curr]-1] = a[i+1];
            }
        }
    }
    for(i=1;i<=m;i++)
        if(!v[i])ans[i] = i;
    answer(ans,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...