제출 #1362420

#제출 시각아이디문제언어결과실행 시간메모리
1362420mariaclaraThe Collection Game (BOI21_swaps)C++20
0 / 100
0 ms412 KiB
//g++ swaps_sample.cpp sample_grader.cpp
#include "swaps.h"
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
#define all(x) x.begin(), x.end()
#define sz(x) (int)x.size()
#define mk make_pair
#define pb push_back
#define fr first
#define sc second

vector<vi> merge(vector<vi> a) {
    if(a.empty()) return a;
    
    // a funcao merge acha a ordem de todo mundo
    // primeiro, dividimos cada array em 2 e chamamos a recorrencia

    vector<vi> b;

    for(auto v : a) {
        if(sz(v) == 1) continue;

        vi x, y;
        for(int i = 0; 2*i < sz(v); i++) x.pb(v[i]);
        for(int i = sz(v)-1; 2*i >= sz(v); i--) y.pb(v[i]);

        b.pb(x);
        b.pb(y);
    }

    b = merge(b);

    for(int i = 0, j = 0; i < sz(a); i++) {
        if(sz(a[i]) == 1) continue;

        vi x = b[2*j], y = b[2*j+1];

        for(int k = 0; k < sz(x); k++)
            schedule(x[k], y[sz(y)-1-k]);

        j++;
    }

    vi rsp = visit();

    for(int i = 0, j = 0, cnt = 0; i < sz(a); i++) {
        if(sz(a[i]) == 1) continue;


        for(int k = 0; k < sz(b[2*j]); k++) {
            if(rsp[cnt] == 0) swap(b[2*j][k], b[2*j+1][sz(b[2*j+1])-1-k]);
            cnt++;
        }

        j++;
    }

    b = merge(b);

    for(int i = 0, j = 0; i < sz(a); i++) {
        if(sz(a[i]) == 1) continue;

        a[i].clear();
        for(auto it : b[2*j]) a[i].pb(it);
        for(auto it : b[2*j+1]) a[i].pb(it);

        j++;
    }

    return a;
} 

void solve(int N, int V) {
    vector<vi> v(1);
    for(int i = 1; i <= N; i++) v[0].pb(i);

    answer(merge(v)[0]);
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…