Submission #713883

#TimeUsernameProblemLanguageResultExecution timeMemory
713883gaga999Team Contest (JOI22_team)C++17
100 / 100
976 ms77128 KiB
#include <cstdio> #include <stdio.h> #include <iostream> #include <math.h> #include <vector> #include <queue> #include <stack> #include <deque> #include <algorithm> #include <utility> #include <set> #include <map> #include <stdlib.h> #include <cstring> #include <string.h> #include <string> #include <sstream> #include <assert.h> #include <climits> #include <sstream> #include <numeric> #include <time.h> #include <limits.h> #include <list> #include <bitset> #include <unordered_map> #include <unordered_set> #include <random> #include <iomanip> #include <complex> #include <chrono> // #pragma GCC optimize("Ofast,no-stack-protector") // #pragma GCC optimize("O3,unroll-loops") // #pragma GCC target("avx,avx2,bmi,bmi2,lzcnt,popcnt") #define lowbit(x) ((x) & -(x)) #define ml(a, b) ((1ll * (a) * (b)) % M) #define tml(a, b) (a) = ((1ll * (a) * (b)) % M) #define ad(a, b) ((0ll + (a) + (b)) % M) #define tad(a, b) (a) = ((0ll + (a) + (b)) % M) #define mi(a, b) ((0ll + M + (a) - (b)) % M) #define tmi(a, b) (a) = ((0ll + M + (a) - (b)) % M) #define tmin(a, b) (a) = min((a), (b)) #define tmax(a, b) (a) = max((a), (b)) #define iter(a) (a).begin(), (a).end() #define riter(a) (a).rbegin(), (a).rend() #define init(a, b) memset((a), (b), sizeof(a)) #define cpy(a, b) memcpy((a), (b), sizeof(a)) #define uni(a) a.resize(unique(iter(a)) - a.begin()) #define pb push_back #define mpr make_pair #define ls(i) ((i) << 1) #define rs(i) ((i) << 1 | 1) #define INF 0x3f3f3f3f #define eps 1e-9 #define F first #define S second #define N 150005 #define AC cin.tie(0)->sync_with_stdio(0) using namespace std; typedef long long llt; typedef pair<int, int> pii; typedef pair<double, double> pdd; typedef pair<llt, llt> pll; typedef complex<double> cd; // const int M = 998244353; // random_device rm; // mt19937 rg(rm()); // default_random_engine rg(rm()); // uniform_int_distribution<int> rd(INT_MIN, INT_MAX); // uniform_real_distribution<double> rd(0, M_PI); void db() { cout << "\n"; } template <class T, class... U> void db(T a, U... b) { cout << a << " ", db(b...); } int xa, xb, xc, ct[N], a[N], b[N], c[N]; map<int, vector<int>> ma, mb, mc; map<int, int> pa, pb, pc; queue<int> q; bool vd[N]; signed main() { int n; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d%d%d", &a[i], &b[i], &c[i]); ma[a[i]].pb(i), mb[b[i]].pb(i), mc[c[i]].pb(i); pa[a[i]]++, pb[b[i]]++, pc[c[i]]++; tmax(xa, a[i]), tmax(xb, b[i]), tmax(xc, c[i]); } for (int i = 0; i < n; i++) { ct[i] += (xa == a[i]) + (xb == b[i]) + (xc == c[i]); if (ct[i] > 1) q.push(i), vd[i] = 1; } while (!q.empty()) { int cr = q.front(); q.pop(), n--; if (!--pa[a[cr]]) { pa.erase(a[cr]), ma.erase(a[cr]); auto it = ma.rbegin(); if (it != ma.rend() && xa > it->F) { xa = pa.rbegin()->F; assert(xa == it->F); for (int i : it->S) if (++ct[i] > 1 && !vd[i]) vd[i] = 1, q.push(i); } } if (!--pb[b[cr]]) { pb.erase(b[cr]), mb.erase(b[cr]); auto it = mb.rbegin(); if (it != mb.rend() && xb > it->F) { xb = pb.rbegin()->F; assert(xb == it->F); for (int i : it->S) if (++ct[i] > 1 && !vd[i]) vd[i] = 1, q.push(i); } } if (!--pc[c[cr]]) { pc.erase(c[cr]), mc.erase(c[cr]); auto it = mc.rbegin(); if (it != mc.rend() && xc > it->F) { xc = pc.rbegin()->F; assert(xc == it->F); for (int i : it->S) if (++ct[i] > 1 && !vd[i]) vd[i] = 1, q.push(i); } } } if (n >= 3) printf("%d\n", xa + xb + xc); else puts("-1"); }

Compilation message (stderr)

team.cpp: In function 'int main()':
team.cpp:86:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   86 |     scanf("%d", &n);
      |     ~~~~~^~~~~~~~~~
team.cpp:89:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   89 |         scanf("%d%d%d", &a[i], &b[i], &c[i]);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...