結果

問題 No.1698 Face to Face
ユーザー LayCurse
提出日時 2021-09-24 03:27:11
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 4,206 bytes
コンパイル時間 2,887 ms
コンパイル使用メモリ 224,772 KB
最終ジャッジ日時 2025-01-24 16:29:14
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 3
other WA * 45
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:120:17: warning: ‘void std::random_shuffle(_RAIter, _RAIter) [with _RAIter = int*]’ is deprecated: use 'std::shuffle' instead [-Wdeprecated-declarations]
  120 |   random_shuffle(ind, ind+N/2);
      |   ~~~~~~~~~~~~~~^~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from main.cpp:4:
/usr/include/c++/13/bits/stl_algo.h:4581:5: note: declared here
 4581 |     random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last)
      |     ^~~~~~~~~~~~~~

ソースコード

diff #

#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("inline")
#include<bits/stdc++.h>
using namespace std;
struct Rand{
  unsigned x;
  unsigned y;
  unsigned z;
  unsigned w;
  Rand(void){
    x=123456789;
    y=362436069;
    z=521288629;
    w=(unsigned)time(NULL);
  }
  Rand(unsigned seed){
    x=123456789;
    y=362436069;
    z=521288629;
    w=seed;
  }
  inline unsigned get(void){
    unsigned t;
    t = (x^(x<<11));
    x=y;
    y=z;
    z=w;
    w = (w^(w>>19))^(t^(t>>8));
    return w;
  }
  inline double getUni(void){
    return get()/4294967296.0;
  }
  inline int get(int a){
    return (int)(a*getUni());
  }
  inline int get(int a, int b){
    return a+(int)((b-a+1)*getUni());
  }
  inline long long get(long long a){
    return(long long)(a*getUni());
  }
  inline long long get(long long a, long long b){
    return a+(long long)((b-a+1)*getUni());
  }
  inline double get(double a, double b){
    return a+(b-a)*getUni();
  }
  inline int getExp(int a){
    return(int)(exp(getUni()*log(a+1.0))-1.0);
  }
  inline int getExp(int a, int b){
    return a+(int)(exp(getUni()*log((b-a+1)+1.0))-1.0);
  }
}
;
struct MY_WRITER{
  char buf[1048576];
  int s;
  int e;
  MY_WRITER(){
    s = 0;
    e = 1048576;
  }
  ~MY_WRITER(){
    if(s){
      fwrite_unlocked(buf, 1, s, stdout);
    }
  }
}
;
MY_WRITER MY_WRITER_VAR;
void my_putchar_unlocked(int a){
  if(MY_WRITER_VAR.s == MY_WRITER_VAR.e){
    fwrite_unlocked(MY_WRITER_VAR.buf, 1, MY_WRITER_VAR.s, stdout);
    MY_WRITER_VAR.s = 0;
  }
  MY_WRITER_VAR.buf[MY_WRITER_VAR.s++] = a;
}
inline void wt_L(char a){
  my_putchar_unlocked(a);
}
inline void wt_L(int x){
  int s=0;
  int m=0;
  char f[10];
  if(x<0){
    m=1;
    x=-x;
  }
  while(x){
    f[s++]=x%10;
    x/=10;
  }
  if(!s){
    f[s++]=0;
  }
  if(m){
    my_putchar_unlocked('-');
  }
  while(s--){
    my_putchar_unlocked(f[s]+'0');
  }
}
Rand rnd;
int N = 100000;
int A[100000];
int B[100000];
int Z[100000];
int ind[100000];
int main(){
  int i;
  int j;
  int k;
  srand(time(NULL));
  for(i=(0);i<(N/2);i++){
    ind[i] = i;
  }
  random_shuffle(ind, ind+N/2);
  for(i=(0);i<(N);i++){
    Z[i] = i;
  }
  for(i=(0);i<(N/2);i++){
    A[2*i] = B[2*i] = 2*ind[i];
    A[2*i+1] = B[2*i+1] = 2*ind[i]+1;
    k = rand()%3;
    if(k==0){
      swap(A[2*i], A[2*i+1]);
    }
    if(k==1){
      swap(B[2*i], B[2*i+1]);
    }
    if(k==2){
      swap(Z[2*ind[i]], Z[2*ind[i]+1]);
    }
  }
  for(k=(0);k<(30);k++){
    i = rand()%N;
    j = rand()%N;
    if(i != j){
      if(k%3==0){
        swap(A[i], A[j]);
      }
      if(k%3==1){
        swap(B[i], B[j]);
      }
      if(k%3==2){
        swap(Z[i], Z[j]);
      }
    }
  }
  wt_L(N);
  wt_L('\n');
  {
    int WYIGIcGE;
    if(N==0){
      wt_L('\n');
    }
    else{
      for(WYIGIcGE=(0);WYIGIcGE<(N-1);WYIGIcGE++){
        wt_L(A[WYIGIcGE]+1);
        wt_L(' ');
      }
      wt_L(A[WYIGIcGE]+1);
      wt_L('\n');
    }
  }
  {
    int ao_dF3pO;
    if(N==0){
      wt_L('\n');
    }
    else{
      for(ao_dF3pO=(0);ao_dF3pO<(N-1);ao_dF3pO++){
        wt_L(B[ao_dF3pO]+1);
        wt_L(' ');
      }
      wt_L(B[ao_dF3pO]+1);
      wt_L('\n');
    }
  }
  {
    int hCmBdyQB;
    if(N==0){
      wt_L('\n');
    }
    else{
      for(hCmBdyQB=(0);hCmBdyQB<(N-1);hCmBdyQB++){
        wt_L(Z[hCmBdyQB]+1);
        wt_L(' ');
      }
      wt_L(Z[hCmBdyQB]+1);
      wt_L('\n');
    }
  }
  return 0;
}
// cLay version 20210917-1

// --- original code ---
// Rand rnd;
// int N = 1d5, A[1d5], B[], Z[], ind[];
// {
//   int i, j, k;
//   srand(time(NULL));
//   rep(i,N/2) ind[i] = i;
//   random_shuffle(ind, ind+N/2);
//   rep(i,N) Z[i] = i;
//   rep(i,N/2){
//     A[2*i] = B[2*i] = 2*ind[i];
//     A[2*i+1] = B[2*i+1] = 2*ind[i]+1;
//     k = rand()%3;
//     if(k==0) swap(A[2*i], A[2*i+1]);
//     if(k==1) swap(B[2*i], B[2*i+1]);
//     if(k==2) swap(Z[2*ind[i]], Z[2*ind[i]+1]);
//   }
//   rep(k,30){
//     i = rand()%N;
//     j = rand()%N;
//     if(i != j){
//       if(k%3==0) swap(A[i], A[j]);
//       if(k%3==1) swap(B[i], B[j]);
//       if(k%3==2) swap(Z[i], Z[j]);
//     }
//   }
//   wt(N);
//   wt(A(N)+1);
//   wt(B(N)+1);
//   wt(Z(N)+1);
// }
0