Submission #2960238


Source Code Expand

// {{{
#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <complex>
#include <vector>
#include <list>
#include <set>
#include <queue>
#include <stack>
#include <map>
#include <string>
#include <algorithm>
#include <numeric>
using namespace std;

#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define FOR(i, a, b) for(int i = (a); i < (b); i++)
#define FORR(i, a, b) for(int i = (a); i >= (b); i--)
#define REP(i, n) for(int i = 0; i < (n); i++)
#define REPR(i, n) for(int i = (n); i >= 0; i--)
#define ALL(x) (x).begin(), (x).end()

//#if __cplusplus >= 201103
typedef long long ll;
//#endif
typedef pair<int, int> P;
typedef pair<int, P> IP;

int dx[] = {1, -1, 0, 0};
int dy[] = {0, 0, 1, -1};

const int INF = 100000000;
//#if __cplusplus >= 201103
const ll LINF = 10000000000000000ll;
//#endif
const int MOD = 1e9 + 7;
const double EPS = 1e-9;
// }}}

int n, m;
int companies[50000][4];
int people[50000][3];
int dp[110][110][110];

void init()
{
}

void solve()
{
    REP(i, n){
        int val = companies[i][3];
        dp[companies[i][0]][companies[i][1]][companies[i][2]] = max(val,
            dp[companies[i][0]][companies[i][1]][companies[i][2]]);
    }
    REP(i,101){
        REP(j,101){
            REP(k,101){
                if(i >= 1) dp[i][j][k] = max(dp[i][j][k], dp[i-1][j][k]);
                if(j >= 1) dp[i][j][k] = max(dp[i][j][k], dp[i][j-1][k]);
                if(k >= 1) dp[i][j][k] = max(dp[i][j][k], dp[i][j][k-1]);
                //dp[i][j][k] = max(dp[i][j][k],
                //                    max(dp[i-1][j][k], max(dp[i][j-1][k], dp[i][j][k-1])));
            }
        }
    }
    //REP(i, 101){
    //    REP(j, 101){
    //        REP(k, 101){
    //            dp[i+1][j][k] = max(dp[i+1][j][k], dp[i][j][k]);
    //            dp[i][j+1][k] = max(dp[i][j+1][k], dp[i][j][k]);
    //            dp[i][j][k+1] = max(dp[i][j][k+1], dp[i][j][k]);
    //        }
    //    }
    //}

    REP(i, m){
        cout << dp[people[i][0]][people[i][1]][people[i][2]] << endl;
    }
}

int main()
{
    cin.tie(0);
    ios::sync_with_stdio(false);
    cin >> n >> m;
    REP(i, n){
        REP(j, 4) cin >> companies[i][j];
    }
    REP(i, m){
        REP(j, 3) cin >> people[i][j];
    }
    solve();
    return 0;
}

// vim:set foldmethod=marker:

Submission Info

Submission Time
Task C - Optimal Recommendations
User rrrccc
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2471 Byte
Status AC
Exec Time 106 ms
Memory 7296 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 24
Set Name Test Cases
All 10-random-00.txt, 10-random-01.txt, 10-random-02.txt, 10-random-03.txt, 10-random-04.txt, 20-absW-00.txt, 20-absW-01.txt, 20-absW-02.txt, 20-absW-03.txt, 20-absW-04.txt, 30-balance-00.txt, 30-balance-01.txt, 30-balance-02.txt, 30-balance-03.txt, 30-balance-04.txt, 40-limit_dim-00.txt, 40-limit_dim-01.txt, 40-limit_dim-02.txt, 40-limit_dim-03.txt, 40-limit_dim-04.txt, 40-limit_dim-05.txt, 40-limit_dim-06.txt, Corner1.txt, Sample1.txt
Case Name Status Exec Time Memory
10-random-00.txt AC 104 ms 7296 KB
10-random-01.txt AC 6 ms 6400 KB
10-random-02.txt AC 63 ms 6784 KB
10-random-03.txt AC 79 ms 6784 KB
10-random-04.txt AC 28 ms 6656 KB
20-absW-00.txt AC 102 ms 7040 KB
20-absW-01.txt AC 6 ms 6400 KB
20-absW-02.txt AC 47 ms 6784 KB
20-absW-03.txt AC 89 ms 6656 KB
20-absW-04.txt AC 34 ms 6400 KB
30-balance-00.txt AC 106 ms 7296 KB
30-balance-01.txt AC 7 ms 6400 KB
30-balance-02.txt AC 36 ms 6528 KB
30-balance-03.txt AC 48 ms 7040 KB
30-balance-04.txt AC 81 ms 6784 KB
40-limit_dim-00.txt AC 106 ms 7296 KB
40-limit_dim-01.txt AC 105 ms 7296 KB
40-limit_dim-02.txt AC 105 ms 7296 KB
40-limit_dim-03.txt AC 104 ms 7296 KB
40-limit_dim-04.txt AC 104 ms 7296 KB
40-limit_dim-05.txt AC 104 ms 7296 KB
40-limit_dim-06.txt AC 104 ms 7296 KB
Corner1.txt AC 6 ms 6400 KB
Sample1.txt AC 6 ms 6400 KB