Submission #704300

#TimeUsernameProblemLanguageResultExecution timeMemory
704300uyluluPark (JOI17_park)C++14
20 / 100
220 ms688 KiB
#include "park.h" #include<bits/stdc++.h> using namespace std; const int N = 2000; static int adj[1400]; int n; vector<pair<int,int>> res; int help(int a,int b) { if(a > b) swap(a,b); return Ask(a,b,adj); } void sub1() { for(int i = 0;i < n;i++) { for(int j = i + 1;j < n;j++) { adj[i] = 1; adj[j] = 1; if(help(i,j)) { res.push_back({i,j}); } adj[i] = 0; adj[j] = 0; } } for(auto u : res) { Answer(u.first,u.second); } } int kq[N + 1]; mt19937 rnd(time(0)); void process(vector<int> curr,int base) { kq[base] = curr[0]; kq[base + (int)curr.size() - 1] = curr.back(); if(curr.size() <= 3) { for(int i = 0;i < curr.size();i++) { kq[i + base] = curr[i]; } return; } int idx = rnd() % ((int)curr.size() - 2); int val = curr[idx + 1]; for(int i = 0;i < n;i++) { adj[i] = true; } vector<int> le,ri; le.push_back(curr[0]); ri.push_back(val); for(int i = 1;i < curr.size() - 1;i++) { if(curr[i] == val) continue; adj[curr[i]] = false; if(help(curr[0],val)) { ri.push_back(curr[i]); } else { le.push_back(curr[i]); } adj[curr[i]] = true; } le.push_back(val); ri.push_back(curr.back()); process(le,base); process(ri,base + (int)le.size() - 1); } int my(int i) { return rnd() % i; } void ans(int a,int b) { if(a > b) swap(a,b); Answer(a,b); } void sub2() { vector<int> asd; for(int i = 1;i < n;i++) { asd.push_back(i); } random_shuffle(asd.begin(),asd.end(),my); asd.push_back(n - 1); reverse(asd.begin(),asd.end()); asd.push_back(0); reverse(asd.begin(),asd.end()); process(asd,0); for(int i = 1;i < n;i++) { ans(kq[i],kq[i - 1]); } } void Detect(int T, int N) { n = N; if(T == 1) { sub1(); return; } if(T == 2) { sub2(); return; } }

Compilation message (stderr)

park.cpp: In function 'void process(std::vector<int>, int)':
park.cpp:46:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |   for(int i = 0;i < curr.size();i++) {
      |                 ~~^~~~~~~~~~~~~
park.cpp:63:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   63 |  for(int i = 1;i < curr.size() - 1;i++) {
      |                ~~^~~~~~~~~~~~~~~~~
#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...