Submission #1119040

#TimeUsernameProblemLanguageResultExecution timeMemory
1119040thangdz2k7Minerals (JOI19_minerals)C++17
Compilation error
0 ms0 KiB
// author : thembululquaUwU
// 3.9.2024

#include <bits/stdc++.h>
#include "minerals.h"
#define pb push_back
#define fi first
#define se second
#define endl '\n'

using namespace std;
using ll = long long;
using ii = pair <int, int>;
using vi = vector <int>;

const int N = 2e5 + 5;
const int mod = 1e9 + 7;

void maxl(auto &a, auto b) {a = max(a, b);}
void minl(auto &a, auto b) {a = min(a, b);}

// grader

//int cnt[N], diff = 0, used[N], c[N], n;
//
//int Query(int id){
//    diff -= (cnt[c[id]] > 0);
//    if (used[id]) cnt[c[id]] --;
//    else cnt[c[id]] ++;
//    used[id] ^= 1;
//    diff += (cnt[c[id]] > 0);
//    return diff;
//}
//
//void Answer(int a, int b){
//    cout << a << ' ' << b << endl;
//}

// end

int rt[N], last = 0, q[N];

void dnc(vector <int> p, int L, int R){
    if (p.empty()) return;
    if (L == R) {
        rt[p[0]] = q[L];
        rt[q[L]] = p[0];
        return;
    }

    vector <int> lf, rg;
    int mid = L + R >> 1;
    for (int i = L; i <= mid; ++ i) last = Query(q[i]);

    for (int id : p){
        int _new = Query(id);
        if (_new == last) lf.push_back(id);
        else rg.push_back(id);
        last = _new;
    }

    for (int id : p){
        last = Query(id);
    }

    for (int i = L; i <= mid; ++ i) last = Query(q[i]);

    dnc(rg, mid + 1, R);
    dnc(lf, L, mid);
}

void Solve(int n){
    vector <int> cur;
    int tot = 0, last = 0;
    for (int i = 1; i <= n + n; ++ i){
        int _new = Query[i];
        if (_new == last) q[++ tot] = i;
        else cur.push_back(i);
    }
    dnc(cur, 1, n);

    for (int i = 1; i <= n; ++ i) Answer(i, rt[i]);
}

//void solve(){
//    cin >> n;
//    for (int i = 1; i <= n; ++ i){
//        int a, b; cin >> a >> b;
//        c[a] = i, c[b] = i;
//    }
//
//    Solve(n);
//}
//
//int main(){
//    if (fopen("pqh.inp", "r")){
//        freopen("pqh.inp", "r", stdin);
//        freopen("pqh.out", "w", stdout);
//    }
//    ios_base::sync_with_stdio(0);
//    cin.tie(0); cout.tie(0);
//
//    int t = 1; // cin >> t;
//    while (t --) solve();
//    return 0;
//}

Compilation message (stderr)

minerals.cpp:19:11: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts'
   19 | void maxl(auto &a, auto b) {a = max(a, b);}
      |           ^~~~
minerals.cpp:19:20: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts'
   19 | void maxl(auto &a, auto b) {a = max(a, b);}
      |                    ^~~~
minerals.cpp:20:11: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts'
   20 | void minl(auto &a, auto b) {a = min(a, b);}
      |           ^~~~
minerals.cpp:20:20: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts'
   20 | void minl(auto &a, auto b) {a = min(a, b);}
      |                    ^~~~
minerals.cpp: In function 'void dnc(std::vector<int>, int, int)':
minerals.cpp:52:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   52 |     int mid = L + R >> 1;
      |               ~~^~~
minerals.cpp: In function 'void Solve(int)':
minerals.cpp:76:27: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   76 |         int _new = Query[i];
      |                           ^
minerals.cpp:76:27: error: invalid conversion from 'int (*)(int)' to 'int' [-fpermissive]