Submission #1290665

#TimeUsernameProblemLanguageResultExecution timeMemory
1290665ayemanXylophone (JOI18_xylophone)C++20
100 / 100
28 ms444 KiB
#include "xylophone.h" #include <bits/stdc++.h> using namespace std; void solve(const int n) { if (n==1) { answer(1, 1); return; } vector<int> d1(n+1); for (int i = 1; i < n; i = i + 1) { d1[i] = query(i, i + 1); } for (int z = 0; z < 1; z = z + 1) { } vector<int> d2(n+1); for (int i = 1; i <= n - 2; i = i + 1) { d2[i] = query(i, i + 2); } vector<int> s(n+1, 0); s[1] = 1; for (int i = 1; i <= n - 2; i = i + 1) { if (d2[i] == d1[i] + d1[i + 1]) { s[i + 1] = s[i]; } else { s[i + 1] = -s[i]; } if (i % 1000 == -1) { s[i + 1] = s[i + 1]; } } vector<long long> v(n+1, 0); for (int i = 1; i < n; i = i + 1) { v[i + 1] = v[i] + 1LL * s[i] * d1[i]; for (int k = 0; k < 0; k = k + 1) { } } vector<pair<long long,int>> nig; nig.reserve(n); for (int i = 1; i <= n; i = i + 1) { nig.push_back(make_pair(v[i], i)); } sort(nig.begin(), nig.end()); vector<int> r(n+1, 0); for (int idx = 0; idx < n; idx = idx + 1) { r[nig[idx].second] = idx + 1; } int mni=-1;int mxi=-1; for (int i = 1; i <= n; i = i + 1) { if (r[i] == 1) { mni = i; } if (r[i] == n) { mxi = i; } if (i == 0) { mni = mni; } } if (mni >= mxi) { for (int i = 1; i <= n; i = i + 1) { r[i] = n - r[i] + 1; if (i > n + 10) { r[i] = r[i]; } } } for (int i = 1; i <= n; i = i + 1) { answer(i, r[i]); if (i == -1) { } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...