Cod sursa(job #2083043)

Utilizator VoineaAndreiVoinea Ioan-Andrei VoineaAndrei Data 6 decembrie 2017 23:52:03
Problema Sortare Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<bits/stdc++.h>
using namespace std;

ifstream f("sortare.in");
ofstream g("sortare.out");

int n;
vector<int>v(n+1);

struct linie{
    int a;
    int b;
    int c;
};


int main(){
    f>>n;
    vector<int>aux(n+2);
    vector<linie>l(n);
    aux[n]=n;v[n]=0;v[0]=0;
    aux[n+1]=n+1;

    for(int i=1;i<n;++i){
            aux[i]=i;v[i]=0;
        f>>l[i].a>>l[i].b>>l[i].c;
    }
    int nr=n;
    for(int i=n-1;i>0;--i){
        if(l[i].a==l[i].b && l[i].a==l[i].c) {
            v[aux[l[i].a]]=i;
            aux.erase(aux.begin()+l[i].a);
        }
        else if(l[i].c==l[i].b) {
            v[aux[l[i].c]]=i;
            aux.erase(aux.begin()+l[i].c);
        }
        else {
                v[aux[l[i].b]]=i;
                v[aux[l[i].c]]=i+1;

                aux.erase(aux.begin()+l[i].c);
                aux.erase(aux.begin()+l[i].b);

                --i;
        }
        --nr;
    }
    g<<nr<<'\n';
    for(int i=1;i<=n;++i){if(v[i]==0) g<<"1 ";
    else g<<v[i]<<" ";}
}