結果

問題 No.3068 Speedrun (Hard)
ユーザー snrnsidy
提出日時 2025-03-21 21:58:31
言語 C++17(clang)
(17.0.6 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,582 bytes
コンパイル時間 5,278 ms
コンパイル使用メモリ 173,656 KB
実行使用メモリ 5,888 KB
最終ジャッジ日時 2025-03-21 21:58:46
合計ジャッジ時間 8,035 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 1 TLE * 1
other -- * 32
権限があれば一括ダウンロードができます

ソースコード

diff #

#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization ("unroll-loops")

#include <bits/stdc++.h>

using namespace std;

long long int A[4];
long long int B[4];
long long int N,T;
map <pair<long long int,long long int>,int> memo;
int main(void)
{
	cin.tie(0);
	ios::sync_with_stdio(false);

    cin >> A[0] >> A[1] >> A[2] >> A[3] >> N;
    cin >> B[0] >> B[1] >> B[2] >> B[3] >> T;
    pair <long long int,long long int> p;

    for(int x=0;x<=A[2];x++){
        if(x > N) break;
        if(x*B[2] > T) break;
        for(int y=0;y<=A[3];y++)
        {
            if(y > N) break;
            if(x+y > N) break;
            long long int X = x + y;
            long long int Y = B[2]*x + B[3]*y;
            if(Y > T) break;
            p.first = X;
            p.second = Y;
            if(memo.find(p)==memo.end()) memo[p] = x;
        }
    }

    for(int x=0;x<=A[0];x++){
        if(x > N) break;
        if(x*B[0] > T) break;
        for(int y=0;y<=A[1];y++)
        {
            if(y > N) break;
            if(x+y > N) break;
            long long int X = x + y;
            long long int Y = B[0]*x + B[1]*y;
            if(Y > T) break;
            p.first = X;
            p.second = Y;            
            if(memo.find(p)!=memo.end())
            {
                int a3 = memo[p];
                int a4 = N - a3 - x - y;
                int a1 = x;
                int a2 = y;
                cout << a1 << ' ' << a2 << ' ' << a3 << ' ' << a4 << '\n';
                return 0;
            }
        }
    }    
 	return 0;
}
0