Submission #414845

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
4148452021-05-31 09:05:35KoDGame (IOI13_game)C++17
100 / 100
8599 ms54124 KiB
#include <bits/stdc++.h>
#include "game.h"
using ll = long long;
using ull = unsigned long long;
template <class T> using Vec = std::vector<T>;
template <class T> using Box = std::unique_ptr<T>;
ull xorshift() {
static ull val = 7511168;
val ^= val >> 7;
val ^= val << 9;
return val;
}
struct Node;
using Ptr = Box<Node>;
struct Node {
int pos, size;
ull val, gcd;
Ptr left, right;
Node(const int p, const ull v): pos(p), size(1), val(v), gcd(v), left(), right() {}
void fetch() {
size = (left ? left->size : 0) + 1 + (right ? right->size : 0);
gcd = val;
if (left) gcd = std::gcd(gcd, left->gcd);
if (right) gcd = std::gcd(gcd, right->gcd);
}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Compilation message (stderr)

game.cpp: In function 'Ptr merge(Ptr, Ptr)':
game.cpp:36:42: warning: comparison of integer expressions of different signedness: 'ull' {aka 'long long unsigned int'} and 'int' [-Wsign-compare]
   36 |     if (xorshift() % (x->size + y->size) < x->size) {
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...