제출 #1061212

#제출 시각아이디문제언어결과실행 시간메모리
106121212345678Reconstruction Project (JOI22_reconstruction)C++17
0 / 100
0 ms348 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #pragma gcc-optimize("o3, unroll-loops") const int nx=5e2+5, mx=1e3+5; ll n, m, a[mx], b[mx], w[mx], x, q, L[nx], R[nx], dsu[nx]; vector<ll> dp[nx]; priority_queue<pair<ll, ll>, vector<pair<ll, ll>>, greater<pair<ll, ll>>> add, rem; int find(int x) { if (dsu[x]==x) return x; return dsu[x]=find(dsu[x]); } bool isused(ll idx, ll cw) { for (int i=1; i<=n; i++) dsu[i]=i; vector<pair<ll, ll>> v; for (int i=1; i<=m; i++) v.push_back({abs(w[i]-cw), i}); sort(v.begin(), v.end()); for (auto [_, i]:v) { if (find(a[i])==find(b[i])) continue; dsu[find(a[i])]=find(b[i]); if (i==idx) return 1; } return 0; } int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n>>m; for (int i=1; i<=m; i++) cin>>a[i]>>b[i]>>w[i], L[i]=1, R[i]=1e9; for (int i=1; i<=m; i++) { if (!isused(i, w[i])) continue; ll l=1, r=w[i]; while (l<r) { ll md=(l+r)/2; if (isused(i, md)) r=md; else l=md+1; } //cout<<"edge :"; //cout<<l<<' '; add.push({l, i}); l=w[i], r=1e9; while (l<r) { ll md=(l+r+1)/2; if (isused(i, md)) l=md; else r=md-1; } rem.push({l, i}); //cout<<r<<'\n'; } cin>>q; set<ll> edg; while (q--) { cin>>x; while (!add.empty()&&add.top().first<=x) edg.insert(add.top().second), add.pop(); ll res=0; for (auto tmp:edg) res+=abs(w[tmp]-x); cout<<res<<'\n'; while (!rem.empty()&&rem.top().first<=x) edg.erase(rem.top().second), rem.pop(); } }

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

reconstruction.cpp:6: warning: ignoring '#pragma gcc ' [-Wunknown-pragmas]
    6 | #pragma gcc-optimize("o3, unroll-loops")
      |
#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...