Submission #591881

#TimeUsernameProblemLanguageResultExecution timeMemory
591881Cross_RatioTeam Contest (JOI22_team)C++14
100 / 100
172 ms12308 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
typedef tuple<int,int,int> T;
typedef pair<int,int> P;
int A[150005][3];
signed main() {
    cin.sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int N;
    cin >> N;
    int i, j;
    for(i=0;i<N;i++) {
        for(j=0;j<3;j++) cin >> A[i][j];
    }
    priority_queue<P> Q[3];
    for(i=0;i<N;i++) {
        for(j=0;j<3;j++) Q[j].push(P(A[i][j],i));
    }
    int x[3];
    for(i=0;i<3;i++) {
        x[i] = Q[i].top().second;
        Q[i].pop();
    }
    while(!Q[0].empty()||!Q[1].empty()||!Q[2].empty()) {
        bool isChange = false;
        for(i=0;i<3;i++) {
            bool isWrong = false;
            for(j=0;j<3;j++) {
                if(i==j) continue;
                if(A[x[i]][j]>=A[x[j]][j]) isWrong = true;
            }
            if(isWrong) {
                if(!Q[i].empty()) {
                    x[i] = Q[i].top().second;
                    Q[i].pop();
                    break;
                }
                isChange = true;
            }
        }
        //cout <<x[0] << ' ' << x[1] << ' ' << x[2] << '\n';
        bool isCan = true;
        for(i=0;i<3;i++) {
            for(j=0;j<3;j++) {
                if(i==j) continue;
                if(A[x[i]][j]>=A[x[j]][j]) isCan = false;
            }
        }
        if(isCan) {
            int ans = 0;
            for(i=0;i<3;i++) ans += A[x[i]][i];
            cout << ans;
            return 0;
        }
    }
    cout << -1;
}

Compilation message (stderr)

team.cpp: In function 'int main()':
team.cpp:27:14: warning: variable 'isChange' set but not used [-Wunused-but-set-variable]
   27 |         bool isChange = false;
      |              ^~~~~~~~
#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...