結果
| 問題 |
No.777 再帰的ケーキ
|
| コンテスト | |
| ユーザー |
mattyan1053
|
| 提出日時 | 2018-12-25 01:26:35 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 2,376 bytes |
| コンパイル時間 | 2,072 ms |
| コンパイル使用メモリ | 135,236 KB |
| 最終ジャッジ日時 | 2025-01-06 20:01:00 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 26 TLE * 7 |
ソースコード
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<string>
#include<cstring>
#include<algorithm>
#include<sstream>
#include<complex>
#include<functional>
#include<vector>
#include<map>
#include<queue>
#include<deque>
#include<stack>
#include<set>
using namespace std;
#define endl '\n'
#define pb push_back
#define fst first
#define scd second
#define EPS (1e-7)
#define INF (1e9)
#define PI (acos(-1))
#define ALL(x) (x).begin(), (x).end()
#define RALL(x) (x).rbegin(), (x).rend()
#define REP(i,n) for(int i = 0;i < (n);i++)
#define FOR(i,a,b) for(int i = (a);i <= (b);i++)
#define YES(n) cout << ((n) ? "YES" : "NO" ) << endl
#define Yes(n) cout << ((n) ? "Yes" : "No" ) << endl
constexpr int MOD = 1000000007;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> P;
typedef vector<int> vi;
typedef vector<vector<int>> vii;
typedef vector<ll> vl;
template <class T = int> T in() { T x; cin >> x; return (x); }
template <class T = int> void out(T x) { cout << (x) << endl; }
ll gcd(ll a, ll b) { return b ? gcd(b, a%b) : a; }
// value
ll N;
vector<vector<ll>> cake;
vector<pair<vector<ll>, ll>> m_cake;
void solve() {
cin >> N;
cake.resize(N, vector<ll>(3));
for (ll i = 0; i < N; i++) {
ll tmp1, tmp2, tmp3;
cin >> tmp1 >> tmp2 >> tmp3;
cake[i][0] = tmp1;
cake[i][1] = tmp2;
cake[i][2] = tmp3;
}
sort(ALL(cake), [](vector<ll> v1, vector<ll> v2) {
if (v1[0] != v2[0]) {
return v1[0] < v2[0];
}
else {
return v1[1] < v2[1];
}
});
m_cake.pb(make_pair(vector<ll>(1, 0), 0));
for (int i = 0; i < N;) {
ll tmp = cake[i][0];
ll tmp3 = i;
for (int j = i; i < N && cake[j][0] == tmp; j++, i++) {
pair<vector<ll>,ll> tmp2 = make_pair(vector<ll>(1,i), cake[i][2]);
for (int k = 0; k < tmp3; k++) {
vector<ll> tmp_cake = m_cake[k+1].fst;
ll tmp_cal = m_cake[k+1].scd;
if (cake[i][0] > cake[tmp_cake.back()][0] && cake[i][1] > cake[tmp_cake.back()][1]) {
if (tmp2.scd < tmp_cal + cake[i][2]) {
tmp_cake.pb(i);
tmp2.fst = tmp_cake;
tmp2.scd = tmp_cal + cake[i][2];
}
}
}
m_cake.pb(tmp2);
}
}
sort(ALL(m_cake), [](pair<vector<ll>, ll> p1, pair<vector<ll>, ll> p2) {
return p1.scd > p2.scd;
});
cout << m_cake[0].scd << endl;
return;
}
int main() {
cin.tie(0);
ios::sync_with_stdio(false);
solve();
return 0;
}
mattyan1053