#include <bits/stdc++.h>
#define pb push_back
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define debug(x) cerr << #x << " : " << x << '\n'
using namespace std;
typedef long long ll;
typedef long double ld;
typedef string str;
typedef pair<ll, ll> pll;
const ll Mod = 1000000007LL;
const int N = 1e2 + 10;
const ll Inf = 2242545357980376863LL;
const ll Log = 30;
ll p[N], q[N], ind[N];
vector<ll> G[N], top;
ll L, R;
int mk[N], n;
void DFS(int u){
mk[u] = 1;
for(auto adj : G[u]) if(!mk[adj] && L <= p[adj] && p[adj] <= R) DFS(adj);
top.pb(u);
}
bool Val(int x){
memset(mk, 0, sizeof mk);
top.clear();
for(int i = L; i <= R; i++){
if(!mk[ind[i]]){
DFS(ind[i]);
}
}
reverse(all(top));
memcpy(q, p, sizeof p);
//cerr << "$$ " << top.size() << '\n';
//assert(top.size() == x);
for(int i = L; i <= R; i++)
q[top[i-L]] = i;
cout << "query" << flush;
for(int i = 1; i <= n; i++) cout << " " << q[i];
cout << endl;
int res;
//res = (q[2] < q[1]) && (q[3] < q[4]);
cin >> res;
//debug(res);
return res;
}
int g[N][N];
int mx[N], mn[N];
int main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n;
for(int i = 1; i <= n; i++){
cin >> p[i];
ind[p[i]] = i;
}
for(int i = 2; i <= n; i++){
for(int j = i - 1; j > 0; j--){
L = j;
R = i;
G[ind[i]].pb(ind[j]);
int rs = Val(i);
G[ind[i]].pop_back();
if(!rs){
//cerr << "!! " << ind[j] << " " << ind[i] << '\n';
G[ind[j]].pb(ind[i]);
}
}
}
for(int i = 1; i <= n; i++){
for(auto x : G[i]) g[i][x] = 1;
}
top.clear();
memset(mk,0,sizeof mk);
cout << "end\n";
for(int i = 1; i <= n; i++) if(!mk[i]) DFS(i);
reverse(all(top));
for(int i = 0 ; i < n; i++){
for(int j = n - 2; j >= 0; j--){
if(top[j] > top[j + 1]){
if(!g[top[j]][top[j+1]]) swap(top[j], top[j + 1]);
}
}
}
for(int i = 0; i < n; i++) mn[top[i]] = i + 1;
for(int i = 0 ; i < n; i++){
for(int j = n - 2; j >= 0; j--){
if(top[j] < top[j + 1]){
if(!g[top[j]][top[j+1]]) swap(top[j], top[j + 1]);
}
}
}
for(int i = 0; i < n; i++) mx[top[i]] = i + 1;
for(int i = 1; i <= n; i++) cout << mn[i] << " "; cout << endl;
for(int i = 1; i <= n; i++) cout << mx[i] << " "; cout << endl;
return 0;
}
/*
4
3 2 1 4
*/
Compilation message
zagonetka.cpp: In function 'int main()':
zagonetka.cpp:101:2: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
for(int i = 1; i <= n; i++) cout << mn[i] << " "; cout << endl;
^~~
zagonetka.cpp:101:52: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
for(int i = 1; i <= n; i++) cout << mn[i] << " "; cout << endl;
^~~~
zagonetka.cpp:102:2: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
for(int i = 1; i <= n; i++) cout << mx[i] << " "; cout << endl;
^~~
zagonetka.cpp:102:52: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
for(int i = 1; i <= n; i++) cout << mx[i] << " "; cout << endl;
^~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
5 ms |
384 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
16 ms |
512 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
384 KB |
Output is correct |
2 |
Incorrect |
6 ms |
384 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
78 ms |
396 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |