Submission #769647

#TimeUsernameProblemLanguageResultExecution timeMemory
769647raysh07Xylophone (JOI18_xylophone)C++17
100 / 100
396 ms456 KiB
#include "xylophone.h" #include <bits/stdc++.h> using namespace std; static int ans[5001], pos[5001]; static int a[5001], b[5001]; static int n; void print(){ for (int i = 1; i <= n; i++){ // cout << ans[i] << " "; answer(i, ans[i]); } // cout << "\n"; } void solve(int nn) { n = nn; // int value = query(1, N); // for(int i = 1; i <= N; i++) { // answer(i, i); // } 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); } for (int i = 1; i <= n; i++){ ans[1] = i; if (i + a[1] <= n){ ans[2] = i + a[1]; bool seen = false; bool good = true; for (int j = 3; j <= n; j++){ if (a[j - 2] + a[j - 1] == b[j - 2]) { if (ans[j - 1] > ans[j - 2]){ ans[j] = ans[j - 1] + a[j - 1]; } else { ans[j] = ans[j - 1] - a[j - 1]; } } else { if (ans[j - 1] > ans[j - 2]){ ans[j] = ans[j - 1] - a[j - 1]; } else { ans[j] = ans[j - 1] + a[j - 1]; } } if (ans[j] < 1 || ans[j] > n){ good = false; } } for (int j = 1; j <= n; j++){ if (ans[j] == 1) seen = true; if (ans[j] == n && !seen) good = false; } vector <int> st(n + 1, 0); for (int i = 1; i <= n; i++){ if (ans[i] <= 0 || ans[i] > n) continue; st[ans[i]]++; if (st[ans[i]] > 1) good = false; } if (good){ print(); return; } } if (i - a[1] >= 1){ ans[2] = i - a[1]; bool seen = false; bool good = true; for (int j = 3; j <= n; j++){ if (a[j - 2] + a[j - 1] == b[j - 2]) { if (ans[j - 1] > ans[j - 2]){ ans[j] = ans[j - 1] + a[j - 1]; } else { ans[j] = ans[j - 1] - a[j - 1]; } } else { if (ans[j - 1] > ans[j - 2]){ ans[j] = ans[j - 1] - a[j - 1]; } else { ans[j] = ans[j - 1] + a[j - 1]; } } if (ans[j] < 1 || ans[j] > n){ good = false; } } for (int j = 1; j <= n; j++){ if (ans[j] == 1) seen = true; if (ans[j] == n && !seen) good = false; } vector <int> st(n + 1, 0); for (int i = 1; i <= n; i++){ if (ans[i] <= 0 || ans[i] > n) continue; st[ans[i]]++; if (st[ans[i]] > 1) good = false; } if (good){ print(); return; } } } }

Compilation message (stderr)

xylophone.cpp:5:23: warning: 'pos' defined but not used [-Wunused-variable]
    5 | static int ans[5001], pos[5001];
      |                       ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...