結果
| 問題 |
No.2623 Room Allocation
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-02-09 23:05:39 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,880 bytes |
| コンパイル時間 | 1,869 ms |
| コンパイル使用メモリ | 177,728 KB |
| 実行使用メモリ | 37,700 KB |
| 最終ジャッジ日時 | 2024-09-28 16:17:45 |
| 合計ジャッジ時間 | 4,928 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 22 WA * 8 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using vll = vector<long long>;
using vvll = vector<vector<long long>>;
using vvvll = vector<vector<vector<long long>>>;
using vvvvll = vector<vector<vector<vector<long long>>>>;
using vpll = vector<pair<ll, ll>>;
using vs = vector<string>;
using vb = vector<bool>;
using vvb = vector<vector<bool>>;
using pll = pair<ll, ll>;
#define REP(i, n) for (long long i = 0; i < n; i++)
#define REP2(i, n, m) for (long long i = n; i < m; i++)
#define REPv(v) for (auto itr = v.begin(); itr != v.end(); itr++)
#define REPIN(v) \
for (long long i = 0; i < (long long)v.size(); i++) cin >> v[i];
#define been(vec) vec.begin(), vec.end()
#define LIN \
= []() { \
long long x; \
cin >> x; \
return x; \
}()
#define SIN \
= []() { \
string x; \
cin >> x; \
return x; \
}()
#define SPNL(i, SIZE) (i + 1 == SIZE ? '\n' : ' ')
ll gcd(ll x, ll y) { return (x % y) ? gcd(y, x % y) : y; }
ll lcm(ll x, ll y) { return x / gcd(x, y) * y; }
bool chmin(ll &a, const ll &b) { return (a > b && ((a = b) | 1)); }
bool chmax(ll &a, const ll &b) { return (a < b && ((a = b) | 1)); }
using namespace std;
int main() {
ll n LIN, x LIN, y LIN;
ll nd = min(x + y, n);
vvll pc(n, {0, 0});
REP(i, n) {
char tmp;
cin >> pc[i][0] >> tmp;
pc[i][1] = tmp;
}
// (x+y)k
ll roomA = 0;
vvll ide(nd, vll(2, 0));
vll d(nd);
REP(i, nd) {
for (ll j = 0; i + j * (x + y) < n; j++) {
ll I = i + j * (x + y);
if (pc[I][1] == ll('A'))
ide[i][0] += pc[I][0];
else
ide[i][1] += pc[I][0];
}
d[i] = ide[i][1] - ide[i][0];
roomA += ide[i][0];
}
vvll dp(nd + 1, vll(2, 0));
sort(been(d), [](ll a, ll b) { return a > b; });
REP(i, min(y, nd)) { roomA += d[i]; }
cout << roomA << endl;
return 0;
}