Submission #155127

#TimeUsernameProblemLanguageResultExecution timeMemory
155127MercenaryXylophone (JOI18_xylophone)C++14
100 / 100
130 ms568 KiB

#include<bits/stdc++.h>
#include "xylophone.h"
using namespace std;
const int maxn = 5005;
int a[maxn] , b[maxn];
int val[maxn];

void solve(int n) {
    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);
    }
    int delta = 1;
    val[1] = 0;
    val[2] = a[1];
    for(int i = 3 ; i <= n ; ++i){
        if(a[i - 2] + a[i - 1] != b[i - 2]){
            delta = -delta;
        }
        val[i] = val[i - 1] + delta * a[i - 1];
    }
    pair<int,int> Min = make_pair(1e9 , 0);
    pair<int,int> Max = make_pair(-1e9 , 0);
    for(int i = 1 ; i <= n ; ++i){
        Min = min(Min , make_pair(val[i] , i));
        Max = max(Max , make_pair(val[i] , i));
    }
//    cout << n << endl;
    for(int i = 1 ; i <= n ; ++i){
        val[i] = val[i] - Min.first + 1;
        if(Min.second > Max.second)val[i] = n - val[i] + 1;
//        cout << i << " " << val[i] << endl;
        answer(i , val[i]);
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...