A
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main() {
freopen("number.in", "r", stdin);
freopen("number.out", "w", stdout);
int n;
cin >> n;
for(int i = 1; i <= n; i++) {
int x;
cin >> x;
int j = 0;
while(pow(2, j) < x) j++;
if(pow(2, j) == x) cout << 1;
else cout << 0;
}
return 0;
}
B
#include <iostream>
#include <cstdio>
#define ll long long
using namespace std;
ll a[5005], w[5005], b[5005], sum[5005];
int main() {
freopen("star.in", "r", stdin);
freopen("star.out", "w", stdout);
ll n, m, x, y;
cin >> n >> m >> x >> y;
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 1; i <= n; i++) {
cin >> w[i];
sum[i] = sum[i - 1] + w[i];
}
for(int i = 1; i <= m; i++) cin >> b[i];
ll minn = 1e18;
for(int i = 1; i <= n - m + 1; i++) {
bool flag = true;
for(int j = i; j <= i + m - 1; j++) {
if(a[j] != b[j - i + 1]) {
flag = false;
break;
}
}
if(flag) {
ll xx = i, yy = i + m - 1, cost = 0;
if(xx < x) cost += sum[x] - sum[xx];
else if(xx > x) cost += sum[xx - 1] - sum[x - 1];
if(yy < y) cost += sum[y] - sum[yy];
else if (yy > y) cost += sum[yy - 1] - sum[y - 1];
cout << xx << ' ' << yy << ' ' << cost << endl;
minn = min(minn, cost);
}
}
cout << minn << endl;
return 0;
}
D
#include <iostream>
#include <cstdio>
#define ll long long
using namespace std;
ll n, ty, minn = 1e18, a[3005], b[3005], ans[3005];
bool vis[3005];
void dfs(ll cur, ll sum) {
if(cur == n + 1) {
if(sum < minn) {
minn = sum;
if(ty == 0) {
for(int i = 1; i <= n; i++) ans[i] = b[i];
}
}
}
for(int i = 1; i <= n; i++) {
if(!vis[i]) {
vis[i] = true;
b[cur] = i;
ll maxn = a[b[1]], minn = a[b[1]];
for(int j = 2; j <= cur; j++) {
maxn = max(maxn, a[b[j]]);
minn = min(minn, a[b[j]]);
}
dfs(cur + 1, sum + maxn - minn);
vis[i] = false;
}
}
}
int main() {
freopen("twilight.in", "r", stdin);
freopen("twilight.out", "w", stdout);
cin >> n >> ty;
for(int i = 1; i <= n; i++) cin >> a[i];
dfs(1, 0);
cout << minn << endl;
if(ty == 0) {
for(int i = 1; i <= n; i++) cout << ans[i] << ' ';
}
return 0;
}