Submission #172297

#TimeUsernameProblemLanguageResultExecution timeMemory
172297arnold518Library (JOI18_library)C++14
19 / 100
775 ms4600 KiB
#include "library.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; const int MAXN = 1000; int N; int memo[MAXN+10][MAXN+10]; vector<int> adj[MAXN+10]; bool vis[MAXN+10]; vector<int> ans; int query(int l, int r) { int i, j; if(l==r) memo[l][r]=1; else if(memo[l][r]==-1) { vector<int> t; t.resize(N); for(i=l; i<=r; i++) t[i-1]=1; memo[l][r]=Query(t); } return memo[l][r]; } void Solve(int _N) { int i, j; N=_N; memset(memo, -1, sizeof(memo)); if(N==1) { Answer(vector<int>(1, 1)); return; } for(i=1; i<=N; i++) { int lo, hi; lo=0, hi=i; while(lo+1<hi) { int mid=lo+hi>>1, t; if(mid==0) t=2; else t=query(mid, i-1)+1-query(mid, i); if(t<=0) hi=mid; else lo=mid; } if(lo) adj[i].push_back(lo), adj[lo].push_back(i); lo=0, hi=i; while(lo+1<hi) { int mid=lo+hi>>1, t; if(mid==0) t=2; else t=query(mid, i-1)+1-query(mid, i); if(t<=1) hi=mid; else lo=mid; } if(lo) adj[i].push_back(lo), adj[lo].push_back(i); } int now=0; for(i=1; i<=N; i++) if(adj[i].size()==1) break; now=i; while(1) { ans.push_back(now); vis[now]=1; int cnt=0; for(int nxt : adj[now]) { if(vis[nxt]) continue; now=nxt; cnt++; } if(!cnt) break; } Answer(ans); }

Compilation message (stderr)

library.cpp: In function 'int query(int, int)':
library.cpp:20:12: warning: unused variable 'j' [-Wunused-variable]
     int i, j;
            ^
library.cpp: In function 'void Solve(int)':
library.cpp:52:23: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
             int mid=lo+hi>>1, t;
                     ~~^~~
library.cpp:64:23: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
             int mid=lo+hi>>1, t;
                     ~~^~~
library.cpp:35:12: warning: unused variable 'j' [-Wunused-variable]
     int i, j;
            ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...