제출 #1003442

#제출 시각아이디문제언어결과실행 시간메모리
1003442pccTeam Contest (JOI22_team)C++17
0 / 100
7 ms15708 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pll pair<ll,ll> #define pii pair<int,int> #define fs first #define sc second #define tlll tuple<ll,ll,ll> #define _all(T) T.begin(),T.end() #define tiii tuple<int,int,int> #define ai3 array<int,3> const int mxn = 3e5+10; const int inf = 1e9+10; struct BIT{ int bit[mxn]; vector<int> v; BIT(){} void init(){ fill(bit,bit+mxn,INT_MIN); v.clear(); } void reset(){ for(auto &i:v)bit[i] = INT_MIN; v.clear(); } void modify(int p,int val){ for(;p<mxn;p+=p&-p){ bit[p] = max(bit[p],val); v.push_back(p); } return; } int getval(int p){ int re = INT_MIN; for(;p>0;p-= p&-p)re = max(re,bit[p]); return re; } }; int ans = INT_MIN; vector<int> alla,allb,allc; array<int,3> arr[mxn]; vector<int> v[mxn]; vector<pii> ch[mxn]; int N; BIT bit; namespace PREC{ void GO(){ bit.init(); for(int nowa = 1;nowa<alla.size();nowa++){ for(auto &i:v[nowa]){ int val = bit.getval(arr[i][1]-1); if(val>arr[i][2])ch[nowa].push_back(pii(arr[i][1],val)); bit.modify(arr[i][1],arr[i][2]); } } bit.init(); for(int nowa = 1;nowa<alla.size();nowa++){ for(auto &i:v[nowa]){ int val = bit.getval(arr[i][2]-1); if(val>arr[i][1])ch[nowa].push_back(pii(val,arr[i][2])); bit.modify(arr[i][2],arr[i][1]); } } return; } } namespace CDQ{ void dc(int l,int r){ if(l == r)return; int mid = (l+r)>>1; dc(l,mid); dc(mid+1,r); bit.reset(); vector<ai3> vl,vr;//{b,c,val} for(int i = l;i<=mid;i++){ for(auto &j:ch[i]){ vl.push_back(ai3({j.fs,j.sc,allb[j.fs]+allc[j.sc]})); } } for(int i = mid+1;i<=r;i++){ for(auto &j:v[i]){ vr.push_back(ai3({arr[j][1],arr[j][2],alla[arr[j][0]]})); } } sort(vl.begin(),vl.end()); sort(vr.begin(),vr.end()); /* cerr<<l<<' '<<mid<<' '<<r<<":"<<endl; for(auto &i:vl)cerr<<i[0]<<' '<<i[1]<<' '<<i[2]<<',';cerr<<endl; for(auto &i:vr)cerr<<i[0]<<' '<<i[1]<<' '<<i[2]<<',';cerr<<endl; */ while(!vr.empty()||!vl.empty()){ bool isl = false; if(vl.empty())isl = false; else if(vr.empty())isl = true; else if(vl.back()[0]>vr.back()[0])isl = true; else isl = false; if(isl){ auto now = vl.back();vl.pop_back(); //cerr<<"MODIFY:"<<now[0]<<' '<<now[1]<<' '<<now[2]<<endl; bit.modify(mxn-now[1],now[2]); } else{ auto now = vr.back();vr.pop_back(); //cerr<<"GETANS:"<<now[0]<<' '<<now[1]<<' '<<now[2]<<endl; int tval = bit.getval(mxn-(now[1]+1))+now[2]; ans = max(ans,tval); } } return; } void GO(){ dc(1,alla.size()-1); } } int main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>N; alla = allb = allc = {-1}; for(int i = 1;i<=N;i++){ cin>>arr[i][0]>>arr[i][1]>>arr[i][2]; alla.push_back(arr[i][0]); allb.push_back(arr[i][1]); allc.push_back(arr[i][2]); } sort(alla.begin(),alla.end());alla.resize(unique(alla.begin(),alla.end())-alla.begin()); sort(allb.begin(),allb.end());allb.resize(unique(allb.begin(),allb.end())-allb.begin()); sort(allc.begin(),allc.end());allc.resize(unique(allc.begin(),allc.end())-allc.begin()); for(int i = 1;i<=N;i++){ arr[i][0] = lower_bound(_all(alla),arr[i][0])-alla.begin(); arr[i][1] = lower_bound(_all(allb),arr[i][1])-allb.begin(); arr[i][2] = lower_bound(_all(allc),arr[i][2])-allc.begin(); v[arr[i][0]].push_back(i); } PREC::GO(); //cerr<<"HI"<<endl; CDQ::GO(); /* for(int i = 0;i<alla.size();i++)cerr<<alla[i]<<',';cerr<<endl; for(int i = 0;i<allb.size();i++)cerr<<allb[i]<<',';cerr<<endl; for(int i = 0;i<allc.size();i++)cerr<<allc[i]<<',';cerr<<endl; for(int i = 1;i<alla.size();i++){ cerr<<i<<":"<<endl; for(auto &j:ch[i])cerr<<j.fs<<','<<j.sc<<endl; } */ cout<<ans<<'\n'; return 0; }

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

team.cpp: In function 'void PREC::GO()':
team.cpp:54:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |   for(int nowa = 1;nowa<alla.size();nowa++){
      |                    ~~~~^~~~~~~~~~~~
team.cpp:62:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   62 |   for(int nowa = 1;nowa<alla.size();nowa++){
      |                    ~~~~^~~~~~~~~~~~
#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...