Submission #1210189

#TimeUsernameProblemLanguageResultExecution timeMemory
1210189BoomydayXylophone (JOI18_xylophone)C++20
100 / 100
26 ms528 KiB
#include "xylophone.h" #include <bits/stdc++.h> using namespace std; using ll = long long; void solve(int N) { vector<int> twovals(N-1), threevals(N-2); for(int i=0;i<N-1;++i){ twovals[i] = query(i+1, i+2); } for(int i=0;i<N-2;++i){ threevals[i] = query(i+1, i+3); } vector<int> sign = {1}; // 1 = +, -1 = - for(int i=0;i<N-2;++i){ if (twovals[i]+twovals[i+1]==threevals[i]) { sign.push_back(sign.back()); } else { sign.push_back(-sign.back()); } } vector<int> nums= {0}; for(int i=0;i<N-1;++i){ nums.push_back(nums.back() + sign[i] * twovals[i]); } int minind = min_element(nums.begin(), nums.end()) - nums.begin(); int maxind = max_element(nums.begin(), nums.end()) - nums.begin(); if (maxind < minind){ // negate all the numbers for(int i=0;i<N;++i){ nums[i] = -nums[i]; } } int minv = *min_element(nums.begin(), nums.end()); for(int i=0;i<N;++i){ answer(i+1, nums[i] - minv + 1); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...