제출 #1262299

#제출 시각아이디문제언어결과실행 시간메모리
1262299miniobBroken Device (JOI17_broken_device)C++20
0 / 100
2093 ms4368 KiB
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;

long long los[157];
long long bity[60];     
long long dosta[60];  
int ileju = 0;         
mt19937 rng(2137);

void add(long long x)
 {              
    long long mojamaska = (long long)1 << ileju;
    ileju++;
    for (int i = 59; i >= 0; i--)
    {
      if ((x >> i) & 1) 
      {
          if (!bity[i])
          {
            bity[i] = x; 
            dosta[i] = mojamaska;
            return;
          }
          x ^= bity[i];
          mojamaska ^= dosta[i];
      }
    }
}


vector<long long> dajpod(long long x)  
{
    long long curmaska = 0;
    for (long long i = 59; i >= 0; i--) 
    {
      if ((x >> i) & 1) 
      {
          if (!bity[i])
          {
            return {};   
          }       
          x ^= bity[i]; 
          curmaska ^= dosta[i];
      }
    }
    vector<long long> odp;
    for (long long i = 0; i < ileju; i++)
    {
      if ((curmaska >> i) & (long long)1)
      {
        odp.push_back(i);
      }
    }
    return odp;                         
}

long long gen6()
{
  return ((long long)rng() << (long long)32) + (long long)rng();
}

void Anna( int N, long long X, int K, int P[] ){
  set<long long> nie;
  for(int i = 0; i < 150; i++)
  {
    bity[i] = false;
    dosta[i] = 0;
  }
  for(long long i = 0; i < K; i++)
  {
    nie.insert(P[i]);
  }
  for(long long i = 0; i < 150; i++)
  {
    los[i] = gen6() % (long long)(1100000000000000001);
    if(nie.find(i) == nie.end())
    {
      add(los[i]);
    }
  }
  vector<long long> git = dajpod(X);
  set<long long> jedyn;
  for(auto x : git)
  {
    jedyn.insert(x);
  }
  for(long long i = 0; i < 150; i++)
  {
    if(jedyn.find(i) != jedyn.end())
    {
      Set(i, 1);
    }
    else
    {
      Set(i, 0);
    }
  }
}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;

long long los[157];
mt19937 rng(2137);

long long gen6()
{
  return ((long long)rng() << (long long)32) + (long long)rng();
}

long long Bruno( int N, int A[] ){
  mt19937_64  rng(N);
  long long odp = 0;
  for(int i = 0; i < 150; i++)
  {
    los[i] = gen6() % (long long)(1100000000000000001);
  }
  for(int i = 0; i < N; i++)
  {
    if(A[i])
    {
      odp ^= los[i];
    }
  }
  return odp;
}

컴파일 시 표준 에러 (stderr) 메시지

# 1번째 컴파일 단계

Anna.cpp: In function 'void Anna(int, long long int, int, int*)':
Anna.cpp:67:13: warning: iteration 60 invokes undefined behavior [-Waggressive-loop-optimizations]
   67 |     bity[i] = false;
      |     ~~~~~~~~^~~~~~~
Anna.cpp:65:20: note: within this loop
   65 |   for(int i = 0; i < 150; i++)
      |                  ~~^~~~~
Anna.cpp:67:13: warning: 'void* __builtin_memset(void*, int, long unsigned int)' writing 1200 bytes into a region of size 480 overflows the destination [-Wstringop-overflow=]
   67 |     bity[i] = false;
      |     ~~~~~~~~^~~~~~~
Anna.cpp:6:11: note: destination object 'bity' of size 480
    6 | long long bity[60];
      |           ^~~~
Anna.cpp:68:14: warning: 'void* __builtin_memset(void*, int, long unsigned int)' writing 1200 bytes into a region of size 480 overflows the destination [-Wstringop-overflow=]
   68 |     dosta[i] = 0;
      |     ~~~~~~~~~^~~
Anna.cpp:7:11: note: destination object 'dosta' of size 480
    7 | long long dosta[60];
      |           ^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...