Submission #1040601

# Submission time Handle Problem Language Result Execution time Memory
1040601 2024-08-01T07:44:16 Z hotboy2703 Chameleon's Love (JOI20_chameleon) C++17
40 / 100
10 ms 788 KB
#include "chameleon.h"

#include<bits/stdc++.h>
using ll = int;
using namespace std;
#define pll pair <ll,ll>
#define fi first
#define se second
#define MP make_pair
#define sz(a) (ll((a).size()))
#define BIT(mask,i) (((mask) >> (i))&1)
#define MASK(i) (1LL << (i))
namespace {

int variable_example = 1;

}  // namespace
namespace MOMJOKES{
    const ll MAXN = 510;
    ll L[MAXN],R[MAXN];
    vector <ll> cand[MAXN];
    ll pf[MAXN];
    ll sf[MAXN];

}
void TLE(){
    ll i=0;
    while (i<=1e18)i++;
}
ll query(vector <ll> tmp){
    static ll cnt = 0;
    cnt++;
    if (cnt>20000)exit(0);
    return Query(tmp);
}

void Solve(int n) {
    using namespace MOMJOKES;
    vector <ll> tmp;
    if (n <= 50){
        for (ll i = 1;i <= 2*n;i ++){
            for (ll j = i + 1;j <= 2*n;j ++){
                if (query({i,j}) == 1){
                    cand[i].push_back(j);
                    cand[j].push_back(i);
                }
            }
        }
    }
    else{
        for (ll i = n+1;i<=2*n;i++){
            auto add=[&](ll x,ll y){
                cand[x].push_back(y);
                cand[y].push_back(x);
            };
            ll ans_l,ans_r,ans_mid;
            {
                ll l = 1,r = n;
                while (l <= r){
                    ll mid = (l + r) >> 1;
                    vector <ll> tmp;
                    for (ll j = 1;j <= mid;j ++)tmp.push_back(j);
                    tmp.push_back(i);
                    ll cur = query(tmp);
                    if (cur<=mid){r = mid - 1;}
                    else l = mid + 1;
                }
                ans_l = r + 1;
            }
            {
                ll l = 1,r = n;
                while (l <= r){
                    ll mid = (l + r) >> 1;
                    vector <ll> tmp;
                    for (ll j = mid;j <= n;j ++)tmp.push_back(j);
                    tmp.push_back(i);
                    ll cur = query(tmp);
                    if (cur<=n-mid+1){l = mid + 1;}
                    else r = mid - 1;
                }
                ans_r = l - 1;
            }
            if (ans_l != ans_r){
                ll l = ans_l + 1,r = ans_r - 1;
                while (l <= r){
                    ll mid = (l + r) >> 1;
                    vector <ll> tmp;
                    for (ll j = ans_l+1;j <= mid;j ++)tmp.push_back(j);
                    ll cur1 = query(tmp);
                    tmp.push_back(i);
                    ll cur2 = query(tmp);
                    if (cur2<=cur1){r = mid - 1;}
                    else l = mid + 1;
                }
                ans_mid = r + 1;
                add(i,ans_l);
                add(i,ans_mid);
                add(i,ans_r);
            }
            else{
                add(i,ans_l);
            }
        }
    }
    set <pll> s;
    for (ll i = 1;i <= 2 * n;i ++){
        if (sz(cand[i]) == 3){
            for (ll j = 0;j < 3;j ++){
                vector <ll> all = {i};
                for (ll j1 = 0;j1 < 3;j1 ++){
                    if (j1 != j)all.push_back(cand[i][j1]);
                }
                if (j == 2 || query(all) == 1){
                    L[i] = cand[i][j];
                    break; 
                }
            }
        }
        else{
            ll u = i,v = cand[i][0];
            if (u > v)swap(u,v);
            s.insert(MP(u,v));
        }
    }    
    for (ll i = 1;i <= 2 * n;i ++){
        if (sz(cand[i]) == 3){
            for (ll j = 0;j < 3;j ++){
                if (cand[i][j] == L[i] || L[cand[i][j]] == i)continue;
                ll u = i,v = cand[i][j];
                if (u > v)swap(u,v);
                s.insert(MP(u,v));
            }
        }
    }   
    for (auto x:s)Answer(x.fi,x.se);
}

Compilation message

chameleon.cpp:15:5: warning: '{anonymous}::variable_example' defined but not used [-Wunused-variable]
   15 | int variable_example = 1;
      |     ^~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Runtime error 10 ms 764 KB Execution killed with signal 6
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 344 KB Output is correct
7 Correct 1 ms 344 KB Output is correct
8 Correct 1 ms 344 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 344 KB Output is correct
7 Correct 1 ms 344 KB Output is correct
8 Correct 1 ms 344 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
10 Correct 1 ms 476 KB Output is correct
11 Correct 1 ms 344 KB Output is correct
12 Correct 1 ms 344 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 1 ms 352 KB Output is correct
15 Correct 2 ms 348 KB Output is correct
16 Correct 2 ms 344 KB Output is correct
17 Correct 1 ms 352 KB Output is correct
18 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 356 KB Output is correct
2 Correct 0 ms 352 KB Output is correct
3 Runtime error 10 ms 788 KB Execution killed with signal 6
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Runtime error 10 ms 764 KB Execution killed with signal 6
4 Halted 0 ms 0 KB -