제출 #944274

#제출 시각아이디문제언어결과실행 시간메모리
944274nguyentunglamMinerals (JOI19_minerals)C++17
40 / 100
16 ms6928 KiB
#include "minerals.h" #include <bits/stdc++.h> using namespace std; const int NN = 1e5 + 10; bool in[NN]; int g[NN], one[NN], ans[NN], l[NN], r[NN]; vector<int> ask[NN]; void Solve(int n) { int cur = 0; for(int i = 1, j = 0; i <= 2 * n; i++) { if (Query(i) > cur) { g[i] = 1; in[i] ^= 1; cur++; one[++j] = i; } else g[i] = 2; } for(int i = 1; i <= 2 * n; i++) Query(i); for(int i = 1; i <= 2 * n; i++) if (g[i] == 2) { l[i] = 1; r[i] = n; } for(int loop = 1; loop <= 20; loop++) { bool stop = 1; for(int i = 1; i <= 2 * n; i++) if (g[i] == 2) { if (l[i] > r[i]) continue; stop = 0; int mid = l[i] + r[i] >> 1; ask[mid].push_back(i); } if (stop) break; for(int i = 1; i <= n; i++) { int cur = Query(one[i]); for(int &j : ask[i]) { int nxt = Query(j); if (nxt == cur) { ans[j] = i; r[j] = i - 1; } else l[j] = i + 1; Query(j); } ask[i].clear(); } for(int i = 1; i <= n; i++) Query(one[i]); } for(int i = 1; i <= 2 * n; i++) if (g[i] == 2) { Answer(i, one[ans[i]]); } }

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

minerals.cpp: In function 'void Solve(int)':
minerals.cpp:37:22: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   37 |       int mid = l[i] + r[i] >> 1;
      |                 ~~~~~^~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...