Submission #1253532

#TimeUsernameProblemLanguageResultExecution timeMemory
1253532ardaXylophone (JOI18_xylophone)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#define int long long int
#define ff first
#define ss second
const int MOD = 998244353;
using namespace std;
const int N = 200005;
// int a[N], cnt = 0;
// int query(int l, int r){
//     int mx = 0, mn = N;
//     cnt++;
//     for(int i = l; i <= r; i++) mx = max(mx, a[i]), mn = min(mn, a[i]);
//         cout << l << " " << r << " " << mx - mn << endl;
//     return mx - mn;
// }
void solve(int n){
    // for(int i = 1; i <= n; i++) cin >> a[i];
    int l = 1, r = n;
    while(l != r){
        int m = (l + r) / 2;
        int res = query(1, m);
        if(res == n-1) r = m;
        else l = m+1;
    }
    int ans[n+1], ans2[n+1];
    for(int i = 0; i <= n; i++) ans2[i] = -1;
    ans[l] = 1;
    ans2[1] = l;
    if(l != n) ans[l+1] = query(l, l+1) + 1, ans2[ans[l+1]] = l+1;
    // cout << ans[l] << " " << ans[l+1]<<endl;
    for(int i = l+2; i <= n; i++){
        int hmmm = query(i-1,i);
        if(ans[i-1] + hmmm > n){
            ans[i] = ans[i-1] - hmmm;
            ans2[ans[i-1]-hmmm] = i;
            continue;
        }
        if(ans[i-1] - hmmm < 2){
            ans[i] = ans[i-1] + hmmm;
            ans2[ans[i-1]+hmmm] = i;
            continue;
        }  
        if(ans2[ans[i-1] + hmmm] != -1){
            ans[i] = ans[i-1] - hmmm;
            ans2[ans[i-1]-hmmm] = i;
            continue;
        }
        if(ans2[ans[i-1] - hmmm] != -1){
            ans[i] = ans[i-1] + hmmm;
            ans2[ans[i-1]+hmmm] = i;
            continue;
        }  
        int of = query(i-2, i);
        if(ans[i-2]<ans[i-1]){
            if(of == (ans[i-1]-ans[i-2] + hmmm)) ans[i] = ans[i-1] + hmmm, ans2[ans[i-1] + hmmm] = i;
            else ans[i] = ans[i-1] - hmmm, ans2[ans[i-1] - hmmm] = i;
        }
        else{
            if(of == (ans[i-2]-ans[i-1] + hmmm)) ans[i] = ans[i-1] - hmmm, ans2[ans[i-1] - hmmm] = i;
            else ans[i] = ans[i-1] + hmmm, ans2[ans[i-1] + hmmm] = i;
        }
    }
    if(l != 1) ans[l-1] = query(l-1, l) + 1, ans2[ans[l-1]] = l-1;
    for(int i = l-2; i; i--){
        int hmmm = query(i,i+1);
        if(ans[i+1] + hmmm > n){
            ans[i] = ans[i+1] - hmmm;
            ans2[ans[i+1]-hmmm] = i;
            continue;
        }
        if(ans[i+1] - hmmm < 2){
            ans[i] = ans[i+1] + hmmm;
            ans2[ans[i+1]+hmmm] = i;
            continue;
        }  
        if(ans2[ans[i+1] + hmmm] != -1){
            ans[i] = ans[i+1] - hmmm;
            ans2[ans[i+1]-hmmm] = i;
            continue;
        }
        if(ans2[ans[i+1] - hmmm] != -1){
            ans[i] = ans[i+1] + hmmm;
            ans2[ans[i+1]+hmmm] = i;
            continue;
        }  
        int of = query(i, i+2);
        if(ans[i+2]<ans[i+1]){
            if(of == (ans[i+1]-ans[i+2] + hmmm)) ans[i] = ans[i+1] + hmmm, ans2[ans[i+1] + hmmm] = i;
            else ans[i] = ans[i+1] - hmmm, ans2[ans[i+1] - hmmm] = i;
        }
        else{
            if(of == (ans[i+2]-ans[i+1] + hmmm)) ans[i] = ans[i+1] - hmmm, ans2[ans[i+1] - hmmm] = i;
            else ans[i] = ans[i+1] + hmmm, ans2[ans[i+1] + hmmm] = i;
        }
    }
    for(int i = 1; i <= n; i++) answer(i, ans[i]);
}
int32_t main(){
    int t;
    t = 1;
    while(t--) solve();
}

Compilation message (stderr)

xylophone.cpp: In function 'void solve(long long int)':
xylophone.cpp:21:19: error: 'query' was not declared in this scope
   21 |         int res = query(1, m);
      |                   ^~~~~
xylophone.cpp:29:27: error: 'query' was not declared in this scope
   29 |     if(l != n) ans[l+1] = query(l, l+1) + 1, ans2[ans[l+1]] = l+1;
      |                           ^~~~~
xylophone.cpp:32:20: error: 'query' was not declared in this scope
   32 |         int hmmm = query(i-1,i);
      |                    ^~~~~
xylophone.cpp:63:27: error: 'query' was not declared in this scope
   63 |     if(l != 1) ans[l-1] = query(l-1, l) + 1, ans2[ans[l-1]] = l-1;
      |                           ^~~~~
xylophone.cpp:65:20: error: 'query' was not declared in this scope
   65 |         int hmmm = query(i,i+1);
      |                    ^~~~~
xylophone.cpp:96:33: error: 'answer' was not declared in this scope
   96 |     for(int i = 1; i <= n; i++) answer(i, ans[i]);
      |                                 ^~~~~~
xylophone.cpp: In function 'int32_t main()':
xylophone.cpp:101:21: error: too few arguments to function 'void solve(long long int)'
  101 |     while(t--) solve();
      |                ~~~~~^~
xylophone.cpp:16:6: note: declared here
   16 | void solve(int n){
      |      ^~~~~