제출 #677458

#제출 시각아이디문제언어결과실행 시간메모리
677458DwightKSchruteTeam Contest (JOI22_team)C++17
55 / 100
2087 ms27200 KiB
/* #pragma GCC target ("avx2") #pragma GCC optimization ("O3") #pragma GCC optimization ("unroll-loops") */ #include<bits/stdc++.h> //#include <ext/pb_ds/assoc_container.hpp> //#include <ext/pb_ds/tree_policy.hpp> //using namespace __gnu_pbds; using namespace std; typedef long double ld; typedef long long ll; typedef unsigned long long ull; typedef vector<int>vi; typedef vector<vector<int>>vvi; typedef vector<ll>vl; typedef vector<vl> vvl; typedef pair<int,int>pi; typedef pair<ll,ll> pl; typedef vector<pl> vpl; typedef vector<ld> vld; typedef pair<ld,ld> pld; typedef vector<pi> vpi; //typedef tree<ll, null_type, less_equal<ll>,rb_tree_tag,tree_order_statistics_node_update> ordered_set; template<typename T> ostream& operator<<(ostream& os, vector<T>& a){os<<"[";for(int i=0; i<ll(a.size()); i++){os << a[i] << ((i!=ll(a.size()-1)?" ":""));}os << "]\n"; return os;} #define all(x) x.begin(),x.end() #define YES out("YES") #define NO out("NO") #define out(x){cout << x << "\n"; return;} #define outfl(x){cout << x << endl;return;} #define GLHF ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL) #define print(x){for(auto ait:x) cout << ait << " "; cout << "\n";} #define pb push_back #define umap unordered_map template<typename T> void read(vector<T>& v){ int n=v.size(); for(int i=0; i<n; i++) cin >> v[i]; } template<typename T> vector<T>UNQ(vector<T>a){ vector<T>ans; for(T t:a) if(ans.empty() || t!=ans.back()) ans.push_back(t); return ans; } void solve(); int main(){ GLHF; int t=1; //cin >> t; while(t--) solve(); } map<int,int>val; void compress(vvi& a){ vi s; for(vi v:a) for(int x:v) s.pb(x); sort(all(s)); s=UNQ(s); for(vi& v:a) for(int& x:v){ int to = lower_bound(all(s),x)-s.begin(); val[to] = x; x = to; } } const int MAXN = 2*4000*3 + 10; int t[MAXN]; void upd(int i,int v){ i+=MAXN/2; t[i]=max(t[i],v); while(i>1){ t[i/2] = max(t[i],t[i^1]); i/=2; } } int qur(int l,int r){ int ans=-1e9; for(l+=MAXN/2,r+=MAXN/2 +1; l<r; l/=2,r/=2){ if(l&1)ans=max(ans,t[l++]); if(r&1)ans=max(ans,t[--r]); } return ans; } void solve() { int n; cin >> n; vvi a(n,vi(3)); for(int i=0; i<n; i++){ read(a[i]); } sort(all(a)); a=UNQ(a); n=a.size(); compress(a); int ans=-1; vvi Xs(3*n+1); for(int i=0; i<n; i++) Xs[a[i][0]].pb(i); fill(t,t+MAXN, 0); for(int i=0; i<Xs.size(); i++){ for(int j=i-1; j>=0; j--){ for(int maxy:Xs[j]){ for(int maxx:Xs[i]){ if(a[maxx][0]<=a[maxy][0]) continue; if(a[maxy][1]<=a[maxx][1]) continue; int maxz = qur(0, a[maxy][1]-1); if(maxz<=max(a[maxx][2],a[maxy][2])) continue; ans=max(ans,val[a[maxx][0]] + val[a[maxy][1]] + val[maxz]); } } } for(int ix:Xs[i]) upd(a[ix][1],a[ix][2]); } out(ans) }

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

team.cpp: In function 'void solve()':
team.cpp:122:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  122 |     for(int i=0; i<Xs.size(); i++){
      |                  ~^~~~~~~~~~
#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...