結果

問題 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);
      |   ~~~~~^~~~~~~~~~~~~~

ソースコード

diff #

#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;
}
0