# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
212418 | 2020-03-22T22:30:52 Z | Rayaabualjamal | Chameleon's Love (JOI20_chameleon) | C++14 | 63 ms | 504 KB |
#include <iostream> #include <string> #include <vector> #include <map> #include <set> #include <algorithm> #include <cmath> #include <queue> #include <iomanip> #define rep(i, a, b) for (int i = a; i < b; i++) #define per(j, a, b) for (int j = a; j >= b; j--) #include "chameleon.h" #include <cstdio> #include <cstdlib> using namespace std; //To build sub vectors easily: vector <int> sub_vector(int b, int e, vector <int>& f){ vector <int> r(e-b); rep(i,0,e-b){ r[i]=f[i+b]; } return r; } //To binary search: int binary(int s, int ee, int e, vector <int>& curr){ int start=s, end = ee; while(start!=end-1) { int middle = (start+end)/2; vector <int> sub = sub_vector(middle,e, curr); int see = Query(sub); if(sub.size()==see) end=middle; else start=middle; } return start; } //visited is to not Answer the same couple twice vector <bool> visited; //verti is where I keep the special vertices for each vertex vector <vector <int> > verti; vector <pair <int, int> > graph; //dfs to build the graph: void dfs(int p){ vector <int> ch = {0,0,0}; if(graph[p].first!=-1&&graph[p].second!=-1){ return ; } rep(i,0,3){ bool f = 0; rep(j,i+1,3){ if(i==j)continue; vector <int> ctry = {p, verti[p][i], verti[p][j]}; if(Query(ctry)==1){ ch[i]++; ch[j]++; f = 1; break; } } if(f)break; } rep(i,0,3){ if(ch[i]==0){ graph[p].second = verti[p][i]; graph[verti[p][i]].first = p; dfs(verti[p][i]); } } return ; } void Solve(int N) { int n=N*2; vector <vector <int> > v(4); verti.resize(n+1); visited.assign(n+1,0); graph.assign(n+1,{-1,-1}); // loop thro all vertices: rep(i,1, n+1){ vector <int> curr; vector<int> which= {-1,-1,-1,-1}; //find all special vertices for this vertex: rep(j,0,4){ curr = v[j]; curr.push_back(i); int check = Query(curr); //if it has no special vertices in this vector store it's size: if(check==curr.size()){ which[j]=curr.size(); continue; } int start = 0, end = curr.size(); //binary seach all possible special vertices that is in this vector: while(check!=curr.size()){ int remov = binary(start, end, curr.size(), curr); verti[i].push_back(curr[remov]); verti[curr[remov]].push_back(i); end = remov; curr.erase (curr.begin()+remov); //check if there is still a special vertex: check = Query(curr); } } //choose the place that has the least size to insert 'i' in it int place = 5, capasity = n+1; rep(i,0,4){ if(which[i]!=-1&& capasity>which[i]){ place=i; } } v[place].push_back(i); } rep(i,1,n+1){ //if already done skip if(visited[i])continue; //if it has a only one kid if(verti[i].size()==1){ Answer(i,verti[i][0]); visited[i]=1; visited[verti[i][0]]=1; } else if(verti[i].size()>1&& graph[i].first!=-1){ //if it's graph was built: get the answer rep(j,0,3){ if(verti[i][j]!=graph[i].first&& verti[i][j]!=graph[i].second){ Answer(i,verti[i][j]); visited[i]=1; visited[verti[i][j]]=1; } } } else if(verti[i].size()>1){ //if it's graph was not built: build the graph then answer dfs(i); rep(j,0,3){ if(verti[i][j]!=graph[i].first&& verti[i][j]!=graph[i].second){ Answer(i,verti[i][j]); visited[i]=1; visited[verti[i][j]]=1; } } } } }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 384 KB | Output is correct |
2 | Correct | 4 ms | 384 KB | Output is correct |
3 | Correct | 28 ms | 384 KB | Output is correct |
4 | Correct | 27 ms | 384 KB | Output is correct |
5 | Correct | 28 ms | 504 KB | Output is correct |
6 | Correct | 27 ms | 384 KB | Output is correct |
7 | Correct | 27 ms | 384 KB | Output is correct |
8 | Correct | 27 ms | 384 KB | Output is correct |
9 | Correct | 28 ms | 384 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 5 ms | 288 KB | Output is correct |
2 | Correct | 4 ms | 384 KB | Output is correct |
3 | Correct | 5 ms | 384 KB | Output is correct |
4 | Correct | 5 ms | 384 KB | Output is correct |
5 | Correct | 4 ms | 384 KB | Output is correct |
6 | Correct | 5 ms | 384 KB | Output is correct |
7 | Correct | 5 ms | 384 KB | Output is correct |
8 | Correct | 5 ms | 384 KB | Output is correct |
9 | Correct | 4 ms | 384 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 5 ms | 288 KB | Output is correct |
2 | Correct | 4 ms | 384 KB | Output is correct |
3 | Correct | 5 ms | 384 KB | Output is correct |
4 | Correct | 5 ms | 384 KB | Output is correct |
5 | Correct | 4 ms | 384 KB | Output is correct |
6 | Correct | 5 ms | 384 KB | Output is correct |
7 | Correct | 5 ms | 384 KB | Output is correct |
8 | Correct | 5 ms | 384 KB | Output is correct |
9 | Correct | 4 ms | 384 KB | Output is correct |
10 | Correct | 5 ms | 384 KB | Output is correct |
11 | Correct | 6 ms | 384 KB | Output is correct |
12 | Correct | 5 ms | 384 KB | Output is correct |
13 | Correct | 5 ms | 384 KB | Output is correct |
14 | Correct | 5 ms | 384 KB | Output is correct |
15 | Correct | 5 ms | 384 KB | Output is correct |
16 | Correct | 5 ms | 384 KB | Output is correct |
17 | Correct | 5 ms | 384 KB | Output is correct |
18 | Correct | 5 ms | 384 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 5 ms | 384 KB | Output is correct |
2 | Correct | 5 ms | 384 KB | Output is correct |
3 | Incorrect | 63 ms | 504 KB | Wrong Answer [3] |
4 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 384 KB | Output is correct |
2 | Correct | 4 ms | 384 KB | Output is correct |
3 | Correct | 28 ms | 384 KB | Output is correct |
4 | Correct | 27 ms | 384 KB | Output is correct |
5 | Correct | 28 ms | 504 KB | Output is correct |
6 | Correct | 27 ms | 384 KB | Output is correct |
7 | Correct | 27 ms | 384 KB | Output is correct |
8 | Correct | 27 ms | 384 KB | Output is correct |
9 | Correct | 28 ms | 384 KB | Output is correct |
10 | Correct | 5 ms | 288 KB | Output is correct |
11 | Correct | 4 ms | 384 KB | Output is correct |
12 | Correct | 5 ms | 384 KB | Output is correct |
13 | Correct | 5 ms | 384 KB | Output is correct |
14 | Correct | 4 ms | 384 KB | Output is correct |
15 | Correct | 5 ms | 384 KB | Output is correct |
16 | Correct | 5 ms | 384 KB | Output is correct |
17 | Correct | 5 ms | 384 KB | Output is correct |
18 | Correct | 4 ms | 384 KB | Output is correct |
19 | Correct | 5 ms | 384 KB | Output is correct |
20 | Correct | 6 ms | 384 KB | Output is correct |
21 | Correct | 5 ms | 384 KB | Output is correct |
22 | Correct | 5 ms | 384 KB | Output is correct |
23 | Correct | 5 ms | 384 KB | Output is correct |
24 | Correct | 5 ms | 384 KB | Output is correct |
25 | Correct | 5 ms | 384 KB | Output is correct |
26 | Correct | 5 ms | 384 KB | Output is correct |
27 | Correct | 5 ms | 384 KB | Output is correct |
28 | Correct | 5 ms | 384 KB | Output is correct |
29 | Correct | 5 ms | 384 KB | Output is correct |
30 | Incorrect | 63 ms | 504 KB | Wrong Answer [3] |
31 | Halted | 0 ms | 0 KB | - |