这个和前面哪一个题很像,只是输出麻烦点而已。
#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <stack>
#define MAX 105
#define INF 0x3f3f3f3f
using namespace std;
stack<int> a[5];
int main() {
freopen("a.txt", "r", stdin);
freopen("b.txt", "w", stdout);
int n, x;
cin >> n;
for (int i = 0; i < n; ++i) {
scanf("%d", &x);
a[x].push(i + 1);
}
int ans = min((int)a[1].size(), (int)a[2].size());
ans = min(ans, (int)a[3].size());
cout << ans << endl;
while (1) {
bool f = true;
for (int i = 1; i <= 3; ++i) {
if (a[i].empty()) { f = false; break; }
a[4].push(a[i].top());
a[i].pop();
}
if (!f)break;
cout << a[4].top();
a[4].pop();
while (!a[4].empty()) {
cout << " " << a[4].top();
a[4].pop();
}
putchar('\n');
}
return 0;
}