代码:
#include<cstdio>
#include<utility>
#include<vector>
#include<algorithm>
using namespace std;
pair<int,int>a[1005];
vector<int>ans[1005];
inline bool cmp(pair<int,int>a,pair<int,int>b){
return a.first>b.first;
}
int main(){
int n;
scanf("%d",&n);
for(int i=1,g;i<=n;i++){
scanf("%d",&g);
a[i]=make_pair(g,i);
}
for(int i=1;i<=n;i++){
sort(a+i,a+1+n,cmp);
if(a[i].first>n-i||!a[i+a[i].first].first){
puts("NO SOLUTION");
return 0;
}
for(int j=i+1;j<=i+a[i].first;j++)
ans[a[i].second].push_back(a[j].second),
ans[a[j].second].push_back(a[i].second);
}
puts("SOLUTION");
for(int i=1;i<=n;i++){
sort(ans[i].begin(),ans[i].end());
for(int j=0;j<ans[i].size()-1;j++)
printf("%d ",ans[i][j]);
printf("%d\n",ans[i].back());
}
return 0;
}