Submission #1252464

#TimeUsernameProblemLanguageResultExecution timeMemory
1252464Mer123haba456Xylophone (JOI18_xylophone)C++20
100 / 100
26 ms692 KiB
#include <bits/stdc++.h>
using namespace std;
#define fast_io ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define N lli(2e5)
#define MOD lli(1e9 + 7)
typedef long long int lli;
typedef vector<lli> vlli;
typedef pair<lli, lli> plli;
typedef vector<plli> vplli;
typedef pair<lli, plli> pplli;
typedef vector<pplli> vpplli;

int query(int s,int t);
void answer(int i, int a);


lli m,k,q;

void solve(int n){
    vlli boy, kuc;
    vlli vect;
    boy.push_back(0);
    kuc.push_back(0);
    for(lli i = 2;i<=n;i++){
        lli su = query(i-1,i);
        vect.push_back(su);
        if(i == 2){
            boy.push_back(su);
            kuc.push_back(-su);
            continue;
        }
        lli suan = query(i-2,i);
        if(suan == su + vect[vect.size()-2]){
            if(boy.back() > boy[boy.size()-2])
                boy.push_back(boy.back() + su);
            else
                boy.push_back(boy.back() - su);
            if(kuc.back() > kuc[kuc.size() - 2])
                kuc.push_back(kuc.back() + su);
            else
                kuc.push_back(kuc.back() - su);
        }else{
            if(boy.back() > boy[boy.size()-2])
                boy.push_back(boy.back() - su);
            else
                boy.push_back(boy.back() + su);
            if(kuc.back() > kuc[kuc.size() - 2])
                kuc.push_back(kuc.back() - su);
            else
                kuc.push_back(kuc.back() + su);
        }
    }
    lli enk = 0;
    for(lli i = 0;i<n;i++)
        enk = min(enk, kuc[i]);
    lli bisir = 0, nsir = 0;
    for(lli i = 0;i<n;i++){
        kuc[i] = -enk + 1 + kuc[i];
        if(kuc[i] == 1)
            bisir = i;
        if(kuc[i] == n)
            nsir = i;
    }
    if(bisir <= nsir){
        for(lli i = 1;i<=n;i++)
            answer(i, kuc[i-1]);
        return;
    }
    enk = 0;
    for(lli i = 0;i<n;i++)
        enk = min(enk, boy[i]);
    for(lli i = 0;i<n;i++){
        boy[i] = -enk + 1 + boy[i];
        answer(i + 1, boy[i]);
    }
}

/*int main()
{
    fast_io
    cin >> k;
    solve(k);
}

int query(int s, int t){
    cout << s << " " << t << endl;
    cin >> k;
    return k;
}

void answer(int i, int a){
    cout << a << " ";
}*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...