This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "cave.h"
#include <stdio.h>
#include <stdlib.h>
#include <bits/stdc++.h>
#define ld double
#define ll int
#define ull unsigned long long
#define llinf 100000000000000000LL // 10^17
#define iinf 2000000000 // 2*10^9
#define pb push_back
#define popb pop_back
#define fi first
#define sc second
#define endl '\n'
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pld pair<ld,ld>
#define sz(a) int(a.size())
#define all(a) a.begin(),a.end()
#define here; cerr<<"===========================\n";
#define ceri(a,l,r) {for(ll i_ = l;i_<=r;i_++) cerr<<a[i_]<< " ";cerr<<endl;}
using namespace std;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll rnd(ll l,ll r){
return uniform_int_distribution<ll>(l,r)(rng);
}
#define maxn 5005
ll n;
ll a[maxn];
ll b[maxn];
ll c[maxn];
ll cans[maxn];
ll cur[maxn];
bool vis[maxn];
void exploreCave(int N) {
n = N;
for(ll i = 0;i<n;i++) b[i] = -1;
for(ll i = 0;i<n;i++) c[i] = 0;
for(ll i = 0;i<n;i++){
ll col = 0;
//if(j==-1) j = n;
fill(c,c+n+1,col);
for(ll j = 0;j<n;j++) if(b[j]!=-1) c[j] = cans[j];
ll j = tryCombination(c);
if(j==-1) j = n;
if(j>i) col = 1;
fill(c,c+n+1,col);
for(ll j = 0;j<n;j++) if(b[j]!=-1) c[j] = cans[j];
ll l = 0,r = n-1,mid,rez;
//here;
//cerr<<"j: "<<i<<" "<<col<<endl;
//ceri(c,0,n-1);
//cerr<<j<<endl;
while(l<=r){
ll mid = (l+r)/2;
for(ll i = 0;i<n;i++){
if(b[i]!=-1) c[i] = cans[i];
else c[i] = 1^col;
}
for(ll i = l;i<=mid;i++){
if(b[i]!=-1) c[i] = cans[i];
else c[i] = col;
}
//cerr<<l<< " "<<r<< " "<<mid<<endl;
ll e = tryCombination(c);
if(e==-1) e = n;
//ceri(c,0,n-1);
//cerr<<e<<endl;
if(e==i){
rez = mid;
r = mid-1;
}else l = mid+1;
}
cans[rez] = !col;
b[rez] = i;
}
answer(cans,b);
}
Compilation message (stderr)
cave.cpp:20:9: warning: ISO C++11 requires whitespace after the macro name
20 | #define here; cerr<<"===========================\n";
| ^~~~
cave.cpp: In function 'void exploreCave(int)':
cave.cpp:49:26: warning: unused variable 'mid' [-Wunused-variable]
49 | ll l = 0,r = n-1,mid,rez;
| ^~~
cave.cpp:75:16: warning: 'rez' may be used uninitialized in this function [-Wmaybe-uninitialized]
75 | b[rez] = i;
| ~~~~~~~^~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |