제출 #1283597

#제출 시각아이디문제언어결과실행 시간메모리
1283597stanwaibbangeRoller Coaster Railroad (IOI16_railroad)C++20
컴파일 에러
0 ms0 KiB
#include "railroad.h" #include <bits/stdc++.h> using namespace std; const ll INF = 1'000'000'001; using ll = long long; // ll main() { // ll n; // assert(1 == scanf("%d", &n)); // std::vector<ll> s(n), t(n); // for (ll i = 0; i < n; ++i) // assert(2 == scanf("%d%d", &s[i], &t[i])); // long long ans = plan_roller_coaster(s, t); // prllf("%lld\n", ans); // return 0; // } void build(ll n, vector<pair<ll,ll>> &in, ll &len, vector<ll> &seg) { len = 2 << __lg(n); seg.resize(2*len,INF); for (ll i{0};i<n;i++) { seg[len+i] = in[i].first; } for (ll i{len-1};i>=1;i--) { seg[i] = min(seg[2*i],seg[2*i+1]); } } void update(ll len, vector<ll> &seg,ll i, ll v) { i += len; seg[i] = v; for (i/=2;i>=1;i/=2) { seg[i] = min(seg[2*i],seg[2*i+1]); } } ll fmin(ll len, vector<ll> &seg) { ll i = 1; while (i < len) { if (seg[2*i] < seg[2*i + 1]) { i = 2*i; } else { i = 2*i + 1; } } return i - len; } ll search(ll len, vector<ll> &seg, ll v) { ll i = 1; while (i < len) { if (seg[i] <= v) { if (seg[2*i+1] <= v) { i = 2*i+1; } else { i = 2*i; } } else { if (seg[2*i] <= seg[2*i+1]) { i = 2*i; } else { i = 2*i+1; } } } return i - len; } // ll search(ll n, vector<pair<ll,ll>> &v, ll w) { // ll l = 0; // ll r = n-1; // while (r >= l) { // ll i = (l+r)/2; // if (v[i].first == w) { // return v[i].second; // } // if (v[i].first > w) { // r = i-1; // } // else { // l = i+1; // } // } // return v[r+1].second; // } long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) { ll n = (ll) s.size()+1; s.push_back(INF); t.push_back(0); // ll len1{}; // ll len2{}; // vector<ll> seg1{}; // vector<ll> seg2{}; // build(n,s,len1,seg1); // build(n,t,len2,seg2); vector<pair<ll,ll>> ss(n); vector<pair<ll,ll>> tt(n); for (ll i{0};i<n;++i) { ss[i] = {s[i],i}; tt[i] = {t[i],i}; } sort(ss.begin(),ss.end()); sort(tt.begin(),tt.end()); vector<ll> si(n); vector<ll> ti(n); for (ll i{0};i<n;++i) { si[ss[i].second] = i; ti[tt[i].second] = i; } ll len1{}; ll len2{}; vector<ll> seg1{}; vector<ll> seg2{}; build(n,ss,len1,seg1); build(n,tt,len2,seg2); ll out = 0; for (ll i{1};i<n;++i) { // cout << s[i] << " " << t[i] << "\n"; // ll a = fmin(len1,seg1); // update(len1,seg1,a,INF); // update(len2,seg2,a,INF); // ll b = fmin(len2,seg2); // out += max(0,t[b]-s[a]); // update(len2,seg2,b,t[a]); // t[b] = t[a]; // s[a] = INF; // t[a] = INF; ll a = ss[search(len1,seg1,0)].second; update(len1,seg1,si[a],INF); update(len2,seg2,ti[a],INF); ll b = tt[search(len2,seg2,s[a])].second; out += max(0,t[b]-s[a]); update(len2,seg2,ti[b],t[a]); t[b] = t[a]; tt[b].first = tt[a].first; } return out; }

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

railroad.cpp:4:7: error: 'll' does not name a type
    4 | const ll INF = 1'000'000'001;
      |       ^~
railroad.cpp: In function 'void build(ll, std::vector<std::pair<long long int, long long int> >&, ll&, std::vector<long long int>&)':
railroad.cpp:20:22: error: 'INF' was not declared in this scope
   20 |     seg.resize(2*len,INF);
      |                      ^~~
railroad.cpp: In function 'long long int plan_roller_coaster(std::vector<int>, std::vector<int>)':
railroad.cpp:93:17: error: 'INF' was not declared in this scope
   93 |     s.push_back(INF);
      |                 ^~~
railroad.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
railroad_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~