제출 #419373

#제출 시각아이디문제언어결과실행 시간메모리
419373Trickster동굴 (IOI13_cave)C++14
0 / 100
556 ms1968 KiB
//Suleyman Atayew #include "cave.h" #include <algorithm> #include <iostream> #include <string.h> #include <stdio.h> #include <vector> #include <bitset> #include <queue> #include <cmath> #include <map> #include <set> #define maxN 200010 #define ff first #define ss second #define pb push_back #define ll long long #define mod 1000000007 #define pii pair <int, int> #define sz(a) (int)(a.size()) ll bigmod(ll a, ll b) { if(b==0)return 1; ll ret = bigmod(a, b/2); return ret * ret % mod * (b%2 ? a : 1) % mod; } using namespace std; int n; int A[maxN], B[maxN]; pii arr[maxN]; void exploreCave(int N) { n = N; for(int i = 0; i < n; i++) arr[i].ff = -1; for(int i = 0; i < n; i++) { int cur[maxN]; for(int h = 0; h < n; h++) { if(arr[h].ff == -1) cur[h] = 0; else cur[h] = arr[h].ss; } int x = tryCombination(cur); int tp = 0; if(x == i) tp = 1; int l = 0, r = n-1, md, ans = 0; while(l <= r) { md = (l+r)/2; int cur[maxN]; for(int h = 0; h < n; h++) { if(arr[h].ff != -1) cur[h] = arr[h].ss; else if(h >= l && h <= md) cur[h] = tp; else cur[h] = !tp; } int x = tryCombination(cur); if(x > i) { r = md-1; ans = md; } else { l = md+1; } } arr[ans] = {tp, i}; } for(int i = 0; i < n; i++) A[i] = arr[i].ff, B[i] = arr[i].ss; answer(A, B); }
#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...