Cod sursa(job #1979021)

Utilizator MaligMamaliga cu smantana Malig Data 9 mai 2017 13:38:35
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream f("euclid2.in");
ofstream g("euclid2.out");

const int NMax = 1e2 + 5;

int N;

struct elem {
    short idx;
    int val;
} v[NMax];
bool operator <(elem a,elem b) {
    return a.val < b.val;
}

void moveCandy (int,int,int);

int main() {
    in>>N;
    for (int i=1;i <= N;++i) {
        in>>v[i].val;
        v[i].idx;
    }

    sort(v+1,v+N+1);

    while (v[1].val) {
        out<<v[1].idx<<' '<<v[2].idx<<' '<<v[N].idx<<'\n';

        --v[1].val;
        --v[2].val;
        v[N].val += 2;
    }

    int i = 2;
    while (i < N) {

        while (v[i].val. && v[i+1].val) {
            moveCandy(i,i+1,1);
        }

        ++i;
    }

    int a = 1,b = N,aux = 2;
    /*
    if (v[1].val > v[N].val) {
        a = 1;
        b = N;
    }
    else {
        a = N;
        b = 1;
    }
    //*/

    while (abs(v[a].val - v[b].val) <= 1) {
        moveCandy(a,b,aux);
    }

    if (v[a].val == v[b].val) {
        return 0;
    }


}

void moveCandy (int x,int y,int t) {

    out<<v[x].idx<<' '<<v[y].idx<<' '<<v[t].idx<<'\n';

    --v[x].val;
    --v[y].val;
    v[t].val += 2;
}