QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#449609#8598. AND Масивgreen_gold_dog#Compile Error//C++201.7kb2024-06-21 15:20:022024-06-21 15:20:03

Judging History

你现在查看的是最新测评结果

  • [2024-06-21 15:20:03]
  • 评测
  • [2024-06-21 15:20:02]
  • 提交

answer

//#pragma GCC optimize("Ofast")
//#pragma GCC target("avx,avx2,sse,sse2,sse3,ssse3,sse4,abm,popcnt,mmx")
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef double db;
typedef long double ldb;
typedef complex<double> cd;

constexpr ll INF64 = 9'000'000'000'000'000'000, INF32 = 2'000'000'000, MOD = 1'000'000'007;
constexpr db PI = acos(-1);
constexpr bool IS_FILE = false, IS_TEST_CASES = false;

random_device rd;
mt19937 rnd32(rd());
mt19937_64 rnd64(rd());

template<typename T>
bool assign_max(T& a, T b) {
	if (b > a) {
		a = b;
		return true;
	}
	return false;
}

template<typename T>
bool assign_min(T& a, T b) {
	if (b < a) {
		a = b;
		return true;
	}
	return false;
}

template<typename T>
T square(T a) {
	return a * a;
}

template<>
struct std::hash<pair<ll, ll>> {
	ll operator() (pair<ll, ll> p) const {
		return ((__int128)p.first * MOD + p.second) % INF64;
	}
};

void solve() {
	ll n, b;
	cin >> n >> b;
	vector<ll> last(1 << b, n);
	vector<ll> arr(n);
	for (ll i = 0; i < n; i++) {
		cin >> arr[i];
	}
	vector<ll> ans(n, 0);
	ll mx = (1 << b) - 1;
	for (ll i = n - 1; i >= 0; i--) {
		if (arr[i] != 0) {
			for (ll j = arr[i]; j < (1 << b); j = (j + 1) | j) {
				last[j] = i;
			}
		}
		for (ll j = 0; j < b; j++) {
			ll now = mx ^ (1 << j);
			while (last[now] != n) {
				ans += last[now] + 1;
				now = now & (mx ^ arr[last[now]]);
			}
		}
	}
	for (auto i : ans) {
		cout << i << ' ';
	}
	cout << '\n';
}

int main() {
	if (IS_FILE) {
		freopen("", "r", stdin);
		freopen("", "w", stdout);
	}
    	ios_base::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
	ll t = 1;
	if (IS_TEST_CASES) {
		cin >> t;
	}
	for (ll i = 0; i < t; i++) {
		solve();
	}
}

详细

answer.code: In function ‘void solve()’:
answer.code:69:37: error: no match for ‘operator+=’ (operand types are ‘std::vector<long long int>’ and ‘__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type’ {aka ‘long long int’})
   69 |                                 ans += last[now] + 1;
      |                                 ~~~~^~~~~~~~~~~~~~~~
answer.code: In function ‘int main()’:
answer.code:82:24: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   82 |                 freopen("", "r", stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~
answer.code:83:24: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   83 |                 freopen("", "w", stdout);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~