結果
問題 |
No.1087 転倒数の転倒数
|
ユーザー |
👑 ![]() |
提出日時 | 2021-01-22 20:31:11 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 731 bytes |
コンパイル時間 | 2,259 ms |
コンパイル使用メモリ | 191,584 KB |
最終ジャッジ日時 | 2025-01-18 03:31:37 |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 WA * 3 |
other | AC * 19 WA * 12 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:19:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 19 | scanf("%d%d",&N,&K); | ~~~~~^~~~~~~~~~~~~~
ソースコード
#include<bits/stdc++.h> using namespace std; using LL = long long; using ULL = unsigned long long; #define rep(i,n) for(int i=0; i<(n); i++) int N,K; int P[1000]; void calcP(int n,int k){ rep(i,n) P[i]=i; int x=n-1; while(k>x){ P[n-1-x]=x; k-=x; x--; } rep(i,x+1) P[N-x-1+i]=i; for(int i=n-1; i>0; i--) if(k){ swap(P[i-1],P[i]); k--; } } int main() { scanf("%d%d",&N,&K); if(N*(N-1)<K){ printf("No\n"); return 0; } printf("Yes\n"); bool big = N*(N-1)/2<=K; if(big) K-=N*(N-1)/2; calcP(N,K); rep(i,N){ rep(j,N){ int iv,jv; iv=(big?N-1-i:i); if(P[i]>j) jv=j+1; else if(P[i]==j) jv=0; else jv=j; if(j) printf(" "); printf("%d",iv*N+jv); } printf("\n"); } return 0; }