Submission #1141181

#TimeUsernameProblemLanguageResultExecution timeMemory
1141181Noproblem29Collapse (JOI18_collapse)C++20
Compilation error
0 ms0 KiB
#include "collapse.h" #include <bits/stdc++.h> using namespace std; const int N=1e5+100; #define ll long long int n,m,q; int p[N]; int r[N]; int dsu(int x){ if(p[x]<0)return x; return p[x]=dsu(p[x]); } bool merge(int x,int y){ x=dsu(x); y=dsu(y); if(x==y)return 0; if(p[x]<p[y])swap(x,y); p[y]+=p[x]; p[x]=y; return 1; } vector<int> simulateCollapse(int _n,vector<int> T,vector<int> X,vector<int> Y,vector<int> W,vector<int> P) { n=_n; m=X.size(); q=W.size(); vector<int>ans(q,0); if(is_sorted(P.begin(),P.end())){ vector<int>ord; for(int i=0;i<q;i++){ ord.push_back(i); } for(int j=0;j<n;j++){ p[j]=-1; } sort(ord.begin(),ord.end(),[](int x,int y){ return W[x]<W[y]; }); int cur=n; int j=0; for(auto i:ord){ while(j<=W[i]){ if(X[j]<=P[i]&&P[i]+1<=Y[j])continue; if(T[j]==0&&r[j]>W[i]){ if(merge(X[j],Y[j])){ cur--; } } j++; } ans[i]=cur; } return ans; } { map<pair<int,int>,int>s; for(int i=m-1;i>=0;i--){ if(X[i]>Y[i])swap(X[i],Y[i]); r[i]=m+1; if(T[i]==1){ s[{X[i],Y[i]}]=i; } else{ r[i]=s[{X[i],Y[i]}]; if(r[i]==0){ r[i]=m+1; } } } } for(int i=0;i<q;i++){ ans[i]=n; for(int j=0;j<n;j++){ p[j]=-1; } for(int j=0;j<=W[i];j++){ if(X[j]<=P[i]&&P[i]+1<=Y[j])continue; if(T[j]==0&&r[j]>W[i]){ if(merge(X[j],Y[j])){ ans[i]--; } } } } return ans; }

Compilation message (stderr)

collapse.cpp: In lambda function:
collapse.cpp:36:32: error: 'W' is not captured
   36 |                         return W[x]<W[y];
      |                                ^
collapse.cpp:35:45: note: the lambda has no capture-default
   35 |                 sort(ord.begin(),ord.end(),[](int x,int y){
      |                                             ^
collapse.cpp:22:91: note: 'std::vector<int> W' declared here
   22 | vector<int> simulateCollapse(int _n,vector<int> T,vector<int> X,vector<int> Y,vector<int> W,vector<int> P) {
      |                                                                               ~~~~~~~~~~~~^
collapse.cpp:36:37: error: 'W' is not captured
   36 |                         return W[x]<W[y];
      |                                     ^
collapse.cpp:35:45: note: the lambda has no capture-default
   35 |                 sort(ord.begin(),ord.end(),[](int x,int y){
      |                                             ^
collapse.cpp:22:91: note: 'std::vector<int> W' declared here
   22 | vector<int> simulateCollapse(int _n,vector<int> T,vector<int> X,vector<int> Y,vector<int> W,vector<int> P) {
      |                                                                               ~~~~~~~~~~~~^