Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #define N 1001
- using namespace std;
- ifstream fin("oposumi.in");
- ofstream fout("oposumi.out");
- int a[N][N], v[N*N];
- int t,n,k, k1;
- int main()
- {
- fin>>t>>n;
- int sol;
- if(t==2){fin>>k; k1=k;}
- for(int i=1;i<=n*(n+1)/2;i++)
- {
- int st=1, dr=n, mij, p;
- while(st<=dr)
- {
- mij=(st+dr)/2;
- if((n-mij+1) *(n-mij+2)/2<=n*(n+1)/2-i+1)
- {
- p=mij; dr=mij-1;
- }
- else st=mij+1;
- }
- if(t==2 && i==k) sol=p;
- if(t==1)fout<<p<<" ";
- }
- if(t==1){ return 0;}
- ///cerinta 2
- k=n*(n+1)/2;
- for(int i=n;i>sol;i--)
- for(int j=i-sol+1;j>=1; j--)
- {
- a[i][j]=k;
- v[k]=1;k--;
- }
- a[sol][1]=k1;
- v[k1]=1;
- sol=1;
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=i;j++)
- {
- if(a[i][j]>0)continue;
- while(v[sol]==1)sol++;
- a[i][j]=sol;
- v[sol]=1;
- }
- }
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=i;j++)
- fout<<a[i][j]<<" ";
- fout<<"\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement