Submission #898397

#TimeUsernameProblemLanguageResultExecution timeMemory
898397lolismekTeam Contest (JOI22_team)C++14
0 / 100
1 ms604 KiB
#include <algorithm> #include <iostream> #include <climits> #include <vector> #include <deque> #include <queue> #include <stack> #include <map> #include <set> #include <iomanip> #include <cassert> #include <random> #include <chrono> // #pragma GCC optimize("O3,unroll-loops") // #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") using ull = unsigned long long; using ll = long long; //#define int __int128 //#define int ll #define pii pair <int, int> #define all(a) (a).begin(), (a).end() #define fr first #define sc second #define pb push_back #define lb lower_bound #define ub upper_bound #define vt vector #define FOR(a, b) for(int i = (a); i <= (b); i++) #define FORr(a, b) for(int i = (a); i >= (b); i--) #define sz(x) (int)(x).size() #define YES cout << "YES\n" #define NO cout << "NO\n" using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int rangerng(int l, int r){ return uniform_int_distribution<>(l, r)(rng); } //////////////////////////////////////////////////////////////////////////////////// const int NMAX = 1000; struct obj{ int x, y, z; }v[NMAX + 1]; map <pii, set <int>> llo, lol, oll; multiset <int> fx, fy, fz; void del(int ind){ fx.erase(fx.find(v[ind].x)); fy.erase(fy.find(v[ind].y)); fz.erase(fz.find(v[ind].z)); llo[{v[ind].x, v[ind].y}].erase(ind); lol[{v[ind].x, v[ind].z}].erase(ind); oll[{v[ind].y, v[ind].z}].erase(ind); } void solve(){ int n; cin >> n; for(int i = 1; i <= n; i++){ cin >> v[i].x >> v[i].y >> v[i].z; llo[{v[i].x, v[i].y}].insert(i); lol[{v[i].x, v[i].z}].insert(i); oll[{v[i].y, v[i].z}].insert(i); fx.insert(v[i].x); fy.insert(v[i].y); fz.insert(v[i].z); } while(true){ bool found = 0; int maxX, maxY, maxZ; if(fx.empty() || fy.empty() || fz.empty()){ break; } maxX = (*fx.rbegin()); maxY = (*fy.rbegin()); for(int ind : llo[{maxX, maxY}]){ found = 1; del(ind); } if(fx.empty() || fy.empty() || fz.empty()){ break; } maxX = (*fx.rbegin()); maxZ = (*fz.rbegin()); for(int ind : lol[{maxX, maxZ}]){ found = 1; del(ind); } if(fx.empty() || fy.empty() || fz.empty()){ break; } maxY = (*fy.rbegin()); maxZ = (*fz.rbegin()); for(int ind : oll[{maxY, maxZ}]){ found = 1; del(ind); } if(!found){ break; } } if(sz(fx) < 3){ cout << -1 << '\n'; return; } int sum = (*fx.rbegin()) + (*fy.rbegin()) + (*fz.rbegin()); cout << sum << '\n'; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); int T; //cin >> T; T = 1; while(T--){ solve(); } return 0; } /* 4 1 2 3 1 2 3 1 2 3 1 2 3 */
#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...