Submission #1144075

#TimeUsernameProblemLanguageResultExecution timeMemory
1144075Darren0724Xylophone (JOI18_xylophone)C++20
100 / 100
26 ms496 KiB
#include "xylophone.h"
#include <bits/stdc++.h>
using namespace std;

void solve(int n) {
    vector<int> a(n+1),b(n+1),c(n+1),v(n+1);
    for(int i=1;i<n;i++){
        a[i]=query(i,i+1);
    }
    for(int i=1;i<n-1;i++){
        b[i]=query(i,i+2);
    }
    v[2]=a[1];
    c[2]=1;
    for(int i=3;i<=n;i++){
        if(a[i-2]+a[i-1]==b[i-2]){
            c[i]=c[i-1];
        }
        else{
            c[i]=c[i-1]*-1;
        }
        v[i]=v[i-1]+a[i-1]*c[i];
    }
    int mn=min_element(v.begin()+1,v.begin()+n+1)-v.begin();
    int mx=max_element(v.begin()+1,v.begin()+n+1)-v.begin();
    if(mn>mx){
        swap(mn,mx);
        for(int i=1;i<=n;i++){
            v[i]*=-1;
        }
    }
    for(int i=1;i<=n;i++){
        answer(i,v[i]-v[mn]+1);
    }
    return;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...