| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1353385 | eri16 | Art Collections (BOI22_art) | C++20 | 0 ms | 0 KiB |
//#include "art.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define se second
int fnd(int n, int num){
return (num+n-1)/2;
}
void solve(int N){
int ssm;
vector <int> rank(N,0);
vector <int> v(N);
for (int i=1; i<=N; i++){v[i-1]=i;}
ssm = publish(v);
for (int i=1; i<N; i++){
v.clear();
v.resize(N);
for (int j=1; j<i; j++){v[j-1]=j;}
for (int j=i+1; j<=N; j++){v[j-2]=j;}
v[N-1]=i;
int ans = publish(v);
int rnk = fnd(N-i+1,ssm-ans);
int ind = 0;
while (rnk>=0 & ind!=N){
if (rank[ind]==0){rnk--;}
ind++;
}
rank[ind-1]=i;
}
for (int i=0; i<N; i++){if (rank[i]==0){rank[i]=N;}}
answer(rank);
}