結果
| 問題 |
No.3068 Speedrun (Hard)
|
| コンテスト | |
| ユーザー |
k82b
|
| 提出日時 | 2025-03-21 22:48:59 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 1,897 bytes |
| コンパイル時間 | 2,162 ms |
| コンパイル使用メモリ | 202,308 KB |
| 実行使用メモリ | 814,748 KB |
| 最終ジャッジ日時 | 2025-03-21 22:49:05 |
| 合計ジャッジ時間 | 5,344 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 MLE * 1 |
| other | -- * 32 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using Int = long long;
template <class T> inline bool setmin(T &A, T B){
if (A > B){
A = B;
return true;
} else {
return false;
}
}
template <class T> inline bool setmax(T &A, T B){
if (A < B){
A = B;
return true;
} else {
return false;
}
}
#define REP(x, y) for (int x = 0; x < int(y); ++x)
#define rep(x, y, z) for (int x = int(y); x < int(z); ++x)
#define PER(x, y) for (int x = int(y) - 1; x >= 0; --x)
#define per(x, y, z) for (int x = int(z) - 1; x >= int(y); --x)
short ff[200200200], ss[200200200];
void solve(){
int A, B, C, D, N;
cin >> A >> B >> C >> D >> N;
int P, Q, R, S, T;
cin >> P >> Q >> R >> S >> T;
vector<tuple<short, int, short, short>> X;
X.reserve((A + B + 1) * (A + 1));
REP(i, min(N + 1, A + B + 1)){
REP(j, min(i + 1, A + 1)){
if (i - j <= B){
X.push_back({i, P * j + Q * (i - j), j, i - j});
}
}
}
vector<tuple<short, int, short, short>> Y;
Y.reserve((C + D + 1) * (C + 1));
PER(i, min(N + 1, C + D + 1)){
REP(j, min(i + 1, C + 1)){
if (i - j <= D){
Y.push_back({i, R * j + S * (i - j), j, i - j});
}
}
}
int l = 0;
vector<int> q;
q.reserve(Y.size());
int j = 0;
REP(i, X.size()){
if (i == 0 || get<0>(X[i]) != get<0>(X[i - 1])){
while (l < int(q.size())){
ff[q[l]] = 0;
ss[q[l]] = 0;
++l;
}
while (j < int(Y.size()) && N - get<0>(X[i]) <= get<0>(Y[j])){
if (N - get<0>(X[i]) == get<0>(Y[j])){
ff[get<1>(Y[j])] = get<2>(Y[j]) + 1;
ss[get<1>(Y[j])] = get<3>(Y[j]) + 1;
q.push_back(get<1>(Y[j]));
}
++j;
}
}
if (ff[T - get<1>(X[i])] > 0){
cout << get<2>(X[i]) << ' ' << get<3>(X[i]) << ' ' << ff[T - get<1>(X[i])] - 1 << ' ' << ss[T - get<1>(X[i])] - 1 << '\n';
return;
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
// cin >> t;
while (t--){
solve();
}
}
k82b