Pagini recente » Cod sursa (job #2212892) | Cod sursa (job #851089) | Istoria paginii utilizator/breedena1268 | Cod sursa (job #415748) | Cod sursa (job #1979021)
#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;
}