Submission #1333473

#TimeUsernameProblemLanguageResultExecution timeMemory
1333473GabrielSticks (POI11_pat)C++20
84 / 100
296 ms55172 KiB
#include "bits/stdc++.h"
using namespace std;
struct Nodo{
    vector< pair<int, int> > Mejores;
};
Nodo operator+(const Nodo& a, const Nodo& b){
    Nodo c;
    for(auto E: a.Mejores) c.Mejores.push_back(E);
    for(auto E: b.Mejores) c.Mejores.push_back(E);
    sort(c.Mejores.rbegin(), c.Mejores.rend());
    Nodo r;
    set<int> Usados;
    for(auto E: c.Mejores){
        if(Usados.find(E.second) == Usados.end()){
            r.Mejores.push_back(E);
            Usados.insert(E.second);
            if(r.Mejores.size() == 3) break;
        }
    }
    while(r.Mejores.size() < 3) r.Mejores.push_back({-2, -2});
    return r;
}
bool operator<(const Nodo& a, const Nodo& b){
    return a.Mejores[0].first < b.Mejores[0].first;
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n = 0, k;
    cin>>k;
    vector<Nodo> a;
    for(int i = 0; i < k; i++){
        int m;
        cin>>m;
        n += m;
        while(m--){
            int v;
            cin>>v;
            vector< pair<int, int> > Extra = {{v, i + 1}, {-2, -2}, {-2, -2}};
            Nodo Nuevo;
            Nuevo.Mejores = Extra;
            a.push_back(Nuevo);
        }
    }
    sort(a.begin(), a.end());
    for(int i = 1; i < n; i++){
        if(i >= 2){
            int j = 0, k = 0;
            for(; j < 2; j++){
                for(k = j + 1; k < 3; k++){
                    if(a[i - 1].Mejores[j].first != -2 and a[i - 1].Mejores[k].first != -2 and a[i].Mejores[0].first < a[i - 1].Mejores[j].first + a[i - 1].Mejores[k].first and a[i].Mejores[0].second != a[i - 1].Mejores[j].second and a[i].Mejores[0].second != a[i - 1].Mejores[k].second and a[i - 1].Mejores[j].second != a[i - 1].Mejores[k].second){
                        cout<<a[i].Mejores[0].second<<" "<<a[i].Mejores[0].first<<" "<<a[i - 1].Mejores[j].second<<" "<<a[i - 1].Mejores[j].first<<" "<<a[i - 1].Mejores[k].second<<" "<<a[i - 1].Mejores[k].first;
                        return 0;
                    }
                }
            }
        }
        a[i] = a[i] + a[i - 1];
    }
    cout<<"NIE";
    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...
#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...