Submission #1353791

#TimeUsernameProblemLanguageResultExecution timeMemory
1353791sallyBikes vs Cars (EGOI23_bikesvscars)C++20
27 / 100
7 ms1912 KiB
#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
typedef pair<int,int> pii;
const int mx = 505;
#define INF 1000000000
int N, W, M=0;
int A[mx][mx], B[mx][mx];
vector<vector<pii>> g(mx);
vector<pair<pii,int>> ans;
int fmx[mx][mx];
int fmn[mx][mx];
int main() {
    cin>>N>>W;
    for(int i=0; i<N; i++) {
        for(int j=0; j<N; j++) {
            if(i == j) {
                fmn[i][j] = 0;
                fmx[i][j] = INF;
            }
            else {
                fmn[i][j] = INF;
                fmx[i][j] = 0;
            }
        }
    }
    for(int j=1; j<N; j++)
        for(int i=0; i<j; i++) {
            int k;
            cin>>k;
            A[i][j] = W-k;
        }
    bool flag = false;
    for(int j=1; j<N; j++)
        for(int i=0; i<j; i++) {
            cin>>B[i][j];
            if(B[i][j] >= A[i][j]) {
                fmx[i][j] = fmx[j][i] = max(A[i][j], B[i][j]);
                fmn[i][j] = fmn[j][i] = min(A[i][j], B[i][j]);
                ans.push_back({{i, j}, A[i][j]});
                ans.push_back({{i, j}, B[i][j]});
                // g[i].push_back({j, A[i][j]});
                // g[j].push_back({i, A[i][j]});
                // g[i].push_back({j, B[i][j]});
                // g[j].push_back({i, B[i][j]});
            }
            // else {
            //     flag = true;
            // }
        }
    // if(flag) {cout<<"NO"; return 0;}
    for(int k=0; k<N; k++) {
        for(int i=0; i<N; i++) {
            for(int j=0; j<N; j++) {
                fmx[i][j] = max(fmx[i][j], min(fmx[i][k], fmx[k][j]));
                fmn[i][j] = min(fmn[i][j], max(fmn[i][k], fmn[k][j]));
            }
        }
    }
    for(int j=1; j<N; j++) {
        for(int i=0; i<j; i++) {
            if(fmx[i][j] != B[i][j]) {cout<<"NO"; return 0;}
            if(fmn[i][j] != A[i][j]) {cout<<"NO"; return 0;}    
        }
    }
    cout<<ans.size()<<'\n';
    for(auto [p, w]:ans) {
        cout<<p.first<<' '<<p.second<<' '<<w<<'\n';
    }
}
#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...