Submission #446590

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
4465902021-07-22 14:02:51SuffixAutomataDungeons Game (IOI21_dungeons)C++17
100 / 100
4086 ms1046196 KiB
#include "dungeons.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int lose[400005], win[500005];
int he[400005], loseget[400005];
int n;
bool sub2 = 1;
bool sub4 = 1;
struct s2tag {
int en;
ll enExp;
int gap;
} s2fw[9][12][400005];
// s2fw[i][j][k] = from k, beat all <4^i, go 4^j steps
// gap: least amount of health you need to begin with for s2fw[i][j][k] to not
// work
ll p5[30];
s2tag mer(s2tag a, s2tag b) {
ll h = b.gap - a.enExp;
if (b.gap == 1ll << 29)
h = 1 << 29;
return {b.en, a.enExp + b.enExp, max(0ll, min(1ll * a.gap, h))};
}
#define ex4(n) p5[n]
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Compilation message (stderr)

dungeons.cpp: In function 's2tag mer(s2tag, s2tag)':
dungeons.cpp:27:39: warning: narrowing conversion of '(long long int)std::max<long long int>(0, (* & std::min<long long int>((1 * ((long long int)a.s2tag::gap)), h)))' from 'long long int' to 'int' [-Wnarrowing]
   27 |   return {b.en, a.enExp + b.enExp, max(0ll, min(1ll * a.gap, h))};
      |                                    ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...