Submission #905088

#TimeUsernameProblemLanguageResultExecution timeMemory
905088destrikesXylophone (JOI18_xylophone)C++17
Compilation error
0 ms0 KiB
//#define _GLIBCXX_DEBUG //#pragma GCC optimization ("O3") //#pragma GCC optimization ("unroint-loops") //#pragma GCC optimize("Ofast,no-stack-protector") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2") //#pragma GCC optimize("unroll-loops") #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> //#define M_PI 3.141592653589793 #define int int64_t #define uint unsigned int #define ld long double #define nl '\n' #define yes "YES\n" #define no "NO\n" #define szof(x) (int) x.size() #define pii pair<int, int> #define ff first #define ss second #define all(a) a.begin(),a.end() #define rall(a) a.rbegin(),a.rend() #define emplace emplace_back #define fast_IO ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define file_input freopen("..\\input.txt","r",stdin);freopen("..\\output.txt","w",stdout);freopen("..\\error.txt","w",stderr); using namespace std; using namespace __gnu_pbds; #ifdef LOCAL mt19937 tw(chrono::high_resolution_clock::now().time_since_epoch().count()); #else mt19937 tw(chrono::high_resolution_clock::now().time_since_epoch().count()); #endif template<typename T> using sorted_queue = priority_queue<T, vector<T>, greater<T>>; template<typename K, typename V> using normal_unordered_map = gp_hash_table<K, V>; template<typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; template<typename T> using ordered_set_eq = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>; template<typename K, typename V> using ordered_map = tree<K, V, less<K>, rb_tree_tag, tree_order_statistics_node_update>; template<typename T, typename C> istream &operator>>(istream &in, pair<T, C> &a) { return in >> a.first >> a.second; } template<typename T, typename C> ostream &operator<<(ostream &out, pair<T, C> &a) { return out << a.first << ' ' << a.second; } template<typename T> istream &operator>>(istream &in, vector<T> &a) { for (auto &i: a) { in >> i; } return in; } template<typename T> ostream &operator<<(ostream &out, vector<T> &a) { for (auto i: a) { out << i << ' '; } return out; } template<typename T> ostream &operator<<(ostream &out, vector<vector<T>> &a) { for (auto i: a) { for (auto j: i) out << j << " "; out << nl; } return out; } const int inf = 2e12, mod = 1e9 + 7; uniform_int_distribution<int> int_distr; int rnd(int a, int b) { return int_distr(tw) % (b - a + 1) + a; } void solve() { int n; cin >> n; int r = 0, prev = n - 1; for (int i = 1; i < n; ++i) { cout << "? " << i + 1 << " " << n << endl; int cur; cin >> cur; if (cur != prev) { r = i - 1; break; } } vector<int> ans(n); ans[r] = 1; set<int> used; used.insert(1); if (r != 0) { cout << "? " << r << " " << r + 1 << endl; int res; cin >> res; ans[r - 1] = res + 1; used.insert(res + 1); } if (r != n - 1) { cout << "? " << r + 1 << " " << r + 2 << endl; int res; cin >> res; ans[r + 1] = res + 1; used.insert(res + 1); } for (int i = r; i + 2 < n; ++i) { int f = i, s = i + 1, t = i + 2; cout << "? " << s + 1 << " " << t + 1 << endl; int dd; cin >> dd; // if (ans[s] - dd < 1 || used.contains(ans[s] - dd)) { // ans[t] = ans[s] + dd; // used.insert(ans[t]); // continue; // } else if (ans[s] + dd > n || used.contains(ans[s] + dd)) { // ans[t] = ans[s] - dd; // used.insert(ans[t]); // continue; // } cout << "? " << f + 1 << " " << t + 1 << endl; int dt; cin >> dt; if (dt == dd + abs(ans[s] - ans[f])) { if (ans[f] < ans[s]) { // ans[t] > ans[s] ans[t] = ans[s] + dd; } else { ans[t] = ans[s] - dd; } } else { if (ans[f] < ans[s]) {// ans[t] < ans[s] ans[t] = ans[s] - dd; } else { ans[t] = ans[s] + dd; } } used.insert(ans[t]); } for (int i = r; i > 1; --i) { int f = i, s = i - 1, t = i - 2; cout << "? " << t + 1 << " " << s + 1 << endl; int dd; cin >> dd; // if (ans[s] - dd < 1 || used.contains(ans[s] - dd)) { // ans[t] = ans[s] + dd; // used.insert(ans[t]); // continue; // } else if (ans[s] + dd > n || used.contains(ans[s] + dd)) { // ans[t] = ans[s] - dd; // used.insert(ans[t]); // continue; // } cout << "? " << t + 1 << " " << s + 1 << endl; int dt; cin >> dt; if (dt == dd + abs(ans[s] - ans[f])) { if (ans[f] < ans[s]) { // ans[t] > ans[s] ans[t] = ans[s] + dd; } else { ans[t] = ans[s] - dd; } } else { if (ans[f] < ans[s]) {// ans[t] < ans[s] ans[t] = ans[s] - dd; } else { ans[t] = ans[s] + dd; } } used.insert(ans[t]); } cout << "! " << ans << endl; } int32_t main() { #ifdef LOCAL //file_input auto start_time = clock(); cerr << setprecision(3) << fixed; #endif fast_IO int test = 1; //cin >> test; while (test--) { solve(); } #ifdef LOCAL cerr << "Execution time: " << (clock() - start_time) * (int) 1e3 / CLOCKS_PER_SEC << " ms\n"; #endif }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccmFXafu.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccnAEU5s.o:xylophone.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccmFXafu.o: in function `main':
grader.cpp:(.text.startup+0x30): undefined reference to `solve(int)'
collect2: error: ld returned 1 exit status