1105. Spiral Matrix

来源:互联网 发布:外阴白斑知乎 编辑:程序博客网 时间:2024/05/16 14:39
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <deque>
#include <queue>
#include <cstring>
#include <vector>
#include <string>
#include <iomanip>
#include <map>
#include <set>
#include <cmath>
#include <stack>
#include <cmath>
#include <algorithm>
using namespace std;
#define max1 100001
#define inf -1
int main()
{
int n,i;
cin>>n;
vector<int>a(n);
for(i=0;i<n;i++)
cin>>a[i];
sort(a.begin(),a.end(),greater<int>());
int w=sqrt(n);
while(n%w!=0)w--;
int h=n/w;
int b[h][w];
int l=0,r=w-1,u=0,d=h-1;
int idx=0;
while(l<r&&u<d)
{
for(i=l;i<=r;i++)b[u][i]=a[idx++];
for(i=u+1;i<=d;i++)b[i][r]=a[idx++];
for(i=r-1;i>=l;i--)b[d][i]=a[idx++];
for(i=d-1;i>=u+1;i--)b[i][l]=a[idx++];
l++;u++;
r--;d--;
}
if(l==r)
for(i=u;i<=d;i++)b[i][r]=a[idx++];
else if(u==d)
for(i=l;i<=r;i++)b[d][i]=a[idx++];
for(i=0;i<h;i++)
{
cout<<b[i][0];
for(int j=1;j<w;j++)
cout<<' '<<b[i][j];
cout<<endl;
}
    return 0;
}
0 0