제출 #1116143

#제출 시각아이디문제언어결과실행 시간메모리
1116143adiyerNice sequence (IZhO18_sequence)C++17
76 / 100
2069 ms53284 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 4e5 + 11; mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()); ll n, m, pos; ll a[N], was[N], ans[N]; vector < ll > ord, g[N]; bool cyc; void dfs(ll v){ was[v] = 1; for(ll u : g[v]) if(!was[u]) dfs(u); ord.push_back(v); } bool f(ll sz){ cyc = 0, ord.clear(); fill(was, was + sz + 1, 0); for(ll i = 0; i <= sz; i++){ g[i].clear(); if(i - n >= 0) g[i].push_back(i - n); if(i + m <= sz) g[i].push_back(i + m); } for(ll i = 0; i <= sz; i++) if(!was[i]) dfs(i); reverse(ord.begin(), ord.end()); fill(was, was + sz + 1, 0); for(ll v : ord){ was[v] = 1; for(ll u : g[v]){ if(was[u]){ return 0; } } } return 1; } void solve(){ cin >> n >> m; ll l = 0, r = n + m, val = 0; while(r - l > 1){ ll md = (l + r) / 2; if(f(md)) l = md; else r = md; } fill(ans, ans + l + 1, 0), f(l); for(ll i = 0; i <= l; i++) ans[ord[i]] = i + 1; ll p = ans[0]; cout << l << '\n'; for(ll i = 1; i <= l; i++) cout << ans[i] - p << ' ', p += ans[i] - p; cout << '\n'; } signed main(){ ll cs; cin >> cs; while(cs--){ solve(); } }

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

sequence.cpp: In function 'void solve()':
sequence.cpp:52:23: warning: unused variable 'val' [-Wunused-variable]
   52 |  ll l = 0, r = n + m, val = 0;
      |                       ^~~
#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...