# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
947079 | 2024-03-15T13:28:08 Z | pcc | 도서관 (JOI18_library) | C++17 | 2000 ms | 3832 KB |
#include <cstdio> #include <vector> #include "library.h" #include <bits/stdc++.h> using namespace std; /* vector<int> M(N); int A = Query(M); vector<int> res(N); Answer(res); */ #define pii pair<int,int> #define fs first #define sc second const int mxn = 1010; vector<int> v; vector<pii> edges; vector<int> perm; bitset<mxn> ch; int N; int ask(bitset<mxn> b){ if(b.count() == 0)return 0; vector<int> re(N); for(int i = 0;i<N;i++){ if(b[i])re[i] = 1; else re[i] = 0; } return Query(re); } bool check(int s,int now){ ch.reset(); int exp = v.size()-s+1; for(int i = s;i<v.size();i++){ ch[v[i]] = true; } ch[now] = true; cerr<<s<<":"<<now<<"::"; for(int i = 0;i<N;i++)cerr<<(ch[i]?1:0);cerr<<":"; int re = ask(ch); for(auto &i:edges){ if(ch[i.fs]&&ch[i.sc])exp--; } cerr<<re<<','<<exp<<endl; if(exp != re)return false; else return true; } int get_edge(int s,int now){ int l = s,r = v.size()-1; while(l != r){ int mid = (l+r+1)>>1; if(check(mid,now))r = mid-1; else l = mid; } return l; } void calc(int now){ while(!check(0,now)){ int s = get_edge(0,now); edges.push_back({v[s],now}); cerr<<v[s]<<":"<<now<<endl; } return; } vector<int> g[mxn]; vector<int> ans; void dfs(int now){ ch[now] = true; ans.push_back(now+1); for(auto nxt:g[now]){ if(ch[nxt])continue; dfs(nxt); } return; } void Solve(int NN){ cerr<<"HI"<<endl; if(NN == 1){ Answer(vector<int>(1,1)); return; } N = NN; srand(time(NULL)); for(int i = 0;i<N;i++)perm.push_back(i); //random_shuffle(perm.begin(),perm.end()); for(auto &i:perm){ if(!v.empty())calc(i); v.push_back(i); } for(auto &i:edges){ g[i.fs].push_back(i.sc); g[i.sc].push_back(i.fs); } for(auto &i:edges){ cerr<<i.fs<<' '<<i.sc<<endl; } int st = 0; for(int i = 0;i<N;i++){ if(g[i].size()==1)st = i; } ch.reset(); dfs(st); for(auto &i:ans)cerr<<i<<' ';cerr<<endl; Answer(ans); return; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 409 ms | 1328 KB | # of queries: 1713 |
2 | Correct | 415 ms | 1496 KB | # of queries: 1706 |
3 | Correct | 420 ms | 1784 KB | # of queries: 1786 |
4 | Correct | 439 ms | 1716 KB | # of queries: 1783 |
5 | Correct | 438 ms | 1964 KB | # of queries: 1796 |
6 | Correct | 442 ms | 1512 KB | # of queries: 1791 |
7 | Correct | 430 ms | 1908 KB | # of queries: 1784 |
8 | Correct | 391 ms | 1548 KB | # of queries: 1686 |
9 | Correct | 422 ms | 1868 KB | # of queries: 1788 |
10 | Correct | 171 ms | 1492 KB | # of queries: 1077 |
11 | Correct | 0 ms | 344 KB | # of queries: 0 |
12 | Correct | 0 ms | 344 KB | # of queries: 2 |
13 | Correct | 0 ms | 344 KB | # of queries: 5 |
14 | Correct | 1 ms | 344 KB | # of queries: 10 |
15 | Correct | 3 ms | 600 KB | # of queries: 75 |
16 | Correct | 8 ms | 716 KB | # of queries: 158 |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 409 ms | 1328 KB | # of queries: 1713 |
2 | Correct | 415 ms | 1496 KB | # of queries: 1706 |
3 | Correct | 420 ms | 1784 KB | # of queries: 1786 |
4 | Correct | 439 ms | 1716 KB | # of queries: 1783 |
5 | Correct | 438 ms | 1964 KB | # of queries: 1796 |
6 | Correct | 442 ms | 1512 KB | # of queries: 1791 |
7 | Correct | 430 ms | 1908 KB | # of queries: 1784 |
8 | Correct | 391 ms | 1548 KB | # of queries: 1686 |
9 | Correct | 422 ms | 1868 KB | # of queries: 1788 |
10 | Correct | 171 ms | 1492 KB | # of queries: 1077 |
11 | Correct | 0 ms | 344 KB | # of queries: 0 |
12 | Correct | 0 ms | 344 KB | # of queries: 2 |
13 | Correct | 0 ms | 344 KB | # of queries: 5 |
14 | Correct | 1 ms | 344 KB | # of queries: 10 |
15 | Correct | 3 ms | 600 KB | # of queries: 75 |
16 | Correct | 8 ms | 716 KB | # of queries: 158 |
17 | Execution timed out | 3026 ms | 3832 KB | Time limit exceeded |
18 | Halted | 0 ms | 0 KB | - |