Submission #1222749

#TimeUsernameProblemLanguageResultExecution timeMemory
1222749mariamtsagareli사다리꼴 (balkan11_trapezoid)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; using i = int; const i MOD = 30013; struct Trap{ i a,b,c,d; }; struct Seg{ i mx,cnt; Seg(i m=0,i c=0):mx(m),cnt(c){} }; Seg mergeSeg(const Seg &x,const Seg &y){if(x.mx>y.mx)return x;if(y.mx>x.mx)return y;if(x.mx==0)return Seg(0,1);return Seg(x.mx,(x.cnt+y.cnt)%MOD);} struct BITSeg{ i n; vector<Seg> t; BITSeg(i m):n(m),t(m+1,Seg(0,1)){} void update(i pos,const Seg &v){for(;pos<=n;pos+=pos&-pos) t[pos]=mergeSeg(t[pos],v);} Seg query(i pos){ Seg res(0,1); for(;pos>0;pos-=pos&-pos) res=mergeSeg(res,t[pos]); return res;} }; int main(){ios::sync_with_stdio(false);cin.tie(NULL); i N; if(!(cin>>N))return 0; vector<Trap>A(N); vector<i>C;C.reserve(4*N); for(i i=0;i<N;i++){cin>>A[i].a>>A[i].b>>A[i].c>>A[i].d;C.push_back(A[i].a);C.push_back(A[i].b);C.push_back(A[i].c);C.push_back(A[i].d);} sort(C.begin(),C.end());C.erase(unique(C.begin(),C.end()),C.end()); auto id=[&](i v){return (i)(lower_bound(C.begin(),C.end(),v)-C.begin()+1);} ; for(auto &t:A){t.a=id(t.a);t.b=id(t.b);t.c=id(t.c);t.d=id(t.d);} sort(A.begin(),A.end(),[](auto &x,auto &y){return x.a<y.a;}); vector<i>orderB(N); i idxB=0; i M=C.size(); i cnt=0; for(i i=0;i<N;i++)orderB[i]=i; sort(orderB.begin(),orderB.end(),[&](i x,i y){return A[x].b<A[y].b;}); BITSeg bit(M); vector<Seg>dp(N); for(i i=0;i<N;i++){ while(idxB<N && A[orderB[idxB]].b < A[i].a){i j=orderB[idxB++]; bit.update(A[j].d, dp[j]);} Seg best=bit.query(A[i].c-1); dp[i]=Seg(best.mx+1,best.cnt); } i K=0; for(auto &s:dp) K=max(K,s.mx); i total=0; for(auto &s:dp) if(s.mx==K) total=(total+s.cnt)%MOD; cout<<K<<" "<<total; }

Compilation message (stderr)

trapezoid.cpp: In function 'int main()':
trapezoid.cpp:34:54: error: expected ';' before 'j'
   34 |         while(idxB<N && A[orderB[idxB]].b < A[i].a){i j=orderB[idxB++]; bit.update(A[j].d, dp[j]);}
      |                                                      ^~
      |                                                      ;
trapezoid.cpp:34:86: error: 'j' was not declared in this scope
   34 |         while(idxB<N && A[orderB[idxB]].b < A[i].a){i j=orderB[idxB++]; bit.update(A[j].d, dp[j]);}
      |                                                                                      ^