Submission #1235570

#TimeUsernameProblemLanguageResultExecution timeMemory
1235570tapilyocaMonster Game (JOI21_monster)C++20
0 / 100
60 ms412 KiB
#include "monster.h"
#include<bits/stdc++.h>

using namespace std;

template<typename T>
using vec = vector<T>;
using ll = long long;
using vll = vec<ll>;
#define pb push_back

std::vector<int> Solve(int N) {
    vec<int> ans(N,0);

    vec<int> couldBeWeak, couldBeStrong;

    for(int i = 0 ; i < N; i++) {
        ll winCount = 0;
        for(int j = 0; j < N; j++) {
            if(i == j) continue;
            if(Query(i,j)) winCount++;
        }
        // cerr << i << " " << winCount << endl;
        if(winCount == 1) couldBeWeak.pb(i);
        else if(winCount == N-2) couldBeStrong.pb(i);
        else ans[i] = winCount;
    }

    bool test = Query(couldBeWeak[0], couldBeWeak[1]);
    ans[couldBeWeak[0]] = 0;
    ans[couldBeWeak[1]] = 1;
    if(!test) swap(ans[couldBeWeak[0]], ans[couldBeWeak[1]]);

    test = Query(couldBeStrong[0], couldBeStrong[1]);
    ans[couldBeStrong[0]] = N-2;
    ans[couldBeStrong[1]] = N-1;
    if(!test) swap(ans[couldBeStrong[0]],ans[couldBeStrong[1]]);

    // for(int &x : ans) cerr << x << " ";
    // cerr << endl;
    return ans;
}

/* 

str 0 => wc 1
str 1 => wc 1
str 2 => wc 2
str 3 => wc 3

...

str n-2 => wc n-2
str n-1 => wc n-2

*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...