提出 #3659168
ソースコード 拡げる
#include <iostream>
#include <algorithm>
#include <bitset>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <cstring>
#include <utility>
#include <vector>
#include <complex>
#include <valarray>
#include <fstream>
#include <cassert>
#include <cmath>
#include <functional>
#include <iomanip>
#include <numeric>
#define rep(X,Y) for (int (X) = 0;(X) < (Y);++(X))
#define rrep(X,Y) for (int (X) = Y-1;(X) >= 0;--(X))
#define repa(X,A,Y) for (int (X) = A;(X) <= (Y);++(X))
#define all(X) (X).begin(),(X).end()
#define mod(n, m) (((n)%(m)+(m))%m)
#define fi first
#define sc second
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> Pii;
typedef pair<ll,ll> Pll;
const int INFINT = 1 << 30; // 1.07x10^ 9
const ll INFLL = 1LL << 60; // 1.15x10^18
const double EPS = 1e-10;
const int MOD = 1000000007;
const int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};
const int MAX_N = 1000;
int N, K;
ll a[MAX_N+1];
ll sum[MAX_N+1];
bool used[MAX_N*(MAX_N+1)/2];
int main() {
std::ios::sync_with_stdio(false);std::cin.tie(0);
cin >> N >> K;
for (int i = 1; i <= N; ++i) cin >> a[i];
for (int i = 1; i <= N; ++i) sum[i] = sum[i-1] + a[i];
vector<ll> vec;
for (int i = 1; i <= N; ++i) {
for (int j = 0; j < i; ++j) {
vec.push_back(sum[i]-sum[j]);
}
}
sort(all(vec));
reverse(all(vec));
ll ma = vec[0], ans = 0;
int bitsize = 0;
while ((1ll<<bitsize) <= ma) ++bitsize;
memset(used, true, sizeof(used));
for (int i = bitsize-1; i >= 0; --i) {
int k = 0;
vector<int> unused;
for (int j = 0; j < vec.size(); ++j) {
if (used[j] && (vec[j]>>i) & 1) {
++k;
} else {
if (used[j]) unused.push_back(j);
}
}
if (K <= k) {
ans += (1ll<<i);
for (int j = 0; j < unused.size(); ++j) used[unused[j]] = false;
}
}
cout << ans << endl;
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | B - Sum AND Subarrays |
| ユーザ | dameningen |
| 言語 | C++14 (Clang 3.8.0) |
| 得点 | 400 |
| コード長 | 2072 Byte |
| 結果 | AC |
| 実行時間 | 58 ms |
| メモリ | 8428 KiB |
ジャッジ結果
| セット名 | All | ||
|---|---|---|---|
| 得点 / 配点 | 400 / 400 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| All | n-large-k-small1, n-large-k-small2, n-large-k-small3, n-large-k-small4, n-large-k-small5, n-medium-1, n-medium-2, n-medium-3, n-medium-4, n-medium-5, n-medium-6, n-medium-7, n-medium-k-small-1, n-medium-k-small-2, n-small-1, n-small-2, n-small-3, nk-large-1, nk-large-2, sample_01, sample_02 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| n-large-k-small1 | AC | 54 ms | 8428 KiB |
| n-large-k-small2 | AC | 53 ms | 8300 KiB |
| n-large-k-small3 | AC | 53 ms | 8300 KiB |
| n-large-k-small4 | AC | 52 ms | 8428 KiB |
| n-large-k-small5 | AC | 54 ms | 8300 KiB |
| n-medium-1 | AC | 27 ms | 4592 KiB |
| n-medium-2 | AC | 43 ms | 8044 KiB |
| n-medium-3 | AC | 3 ms | 896 KiB |
| n-medium-4 | AC | 5 ms | 1272 KiB |
| n-medium-5 | AC | 3 ms | 1024 KiB |
| n-medium-6 | AC | 47 ms | 7660 KiB |
| n-medium-7 | AC | 28 ms | 4720 KiB |
| n-medium-k-small-1 | AC | 3 ms | 896 KiB |
| n-medium-k-small-2 | AC | 12 ms | 2420 KiB |
| n-small-1 | AC | 2 ms | 768 KiB |
| n-small-2 | AC | 2 ms | 768 KiB |
| n-small-3 | AC | 2 ms | 768 KiB |
| nk-large-1 | AC | 58 ms | 8300 KiB |
| nk-large-2 | AC | 54 ms | 8300 KiB |
| sample_01 | AC | 2 ms | 768 KiB |
| sample_02 | AC | 2 ms | 768 KiB |