Submission #1054404

#TimeUsernameProblemLanguageResultExecution timeMemory
1054404j_vdd16Team Contest (JOI22_team)C++17
8 / 100
2093 ms3468 KiB
#include <algorithm> #include <bitset> #include <cstdint> #include <cstring> #include <iostream> #include <limits.h> #include <math.h> #include <map> #include <numeric> #include <queue> #include <set> #include <stack> #include <string> #include <vector> //#define int long long #define loop(X, N) for(int X = 0; X < (N); X++) #define all(V) V.begin(), V.end() #define rall(V) V.rbegin(), V.rend() using namespace std; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> ii; typedef vector<ii> vii; typedef vector<vector<ii>> vvii; typedef vector<bool> vb; typedef vector<vector<bool>> vvb; int getMax(int* data, int size) { bool isSame = false; int best = 0; for (int i = 1; i < size; i++) { if (data[i] > data[best]) { best = i; isSame = false; } else if (data[i] == data[best]) isSame = true; } if (isSame) return -1; return best; } struct Beaver { int x, y, z; bool operator<(const Beaver& b) const { return x > b.x || (x == b.x && y > b.y) || (x == b.x && y == b.y && z > b.z); } }; bool comp(const Beaver& a, const Beaver& b) { return a.x > b.x || (a.x == b.x && a.y > b.y) || (a.x == b.x && a.y == b.y && a.z > b.z); } signed main() { int n; cin >> n; set<Beaver> beaverSet; vector<Beaver> beavers; loop(i, n) { int x, y, z; cin >> x >> y >> z; //beaverSet.insert(Beaver{x, y, z}); beavers.push_back(Beaver{x, y, z}); } for (auto beaver : beaverSet) beavers.push_back(beaver); sort(all(beavers), comp); int bestScore = -1; loop(i, n) { for (int j = i + 1; j < n; j++) { if (beavers[i].x == beavers[j].x) continue; for (int k = j + 1; k < n; k++) { int x[3] = { beavers[i].x, beavers[j].x, beavers[k].x }; int y[3] = { beavers[i].y, beavers[j].y, beavers[k].y }; int z[3] = { beavers[i].z, beavers[j].z, beavers[k].z }; int maxX = 0; int maxY = getMax(y, 3); int maxZ = getMax(z, 3); if (maxX == maxY || maxX == maxZ || maxY == maxZ || maxX == -1 || maxY == -1 || maxZ == -1) continue; bestScore = max(bestScore, x[maxX] + y[maxY] + z[maxZ]); } } } std::cout << bestScore << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...