結果
| 問題 |
No.1087 転倒数の転倒数
|
| コンテスト | |
| ユーザー |
Nachia
|
| 提出日時 | 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;
}
Nachia