답안 #629308

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
629308 2022-08-14T11:01:17 Z Soul234 거래 (IZhO13_trading) C++14
100 / 100
308 ms 32308 KB
#include<bits/stdc++.h>
using namespace std;

void DBG() { cerr << "]\n"; }
template<class H, class... T> void DBG(H h, T... t) {
    cerr << h; if(sizeof...(t)) cerr << ", ";
    DBG(t...);
}
#ifdef LOCAL
#define dbg(...) cerr << "[" << #__VA_ARGS__ << "]: [", DBG(__VA_ARGS__)
#else
#define dbg(...) 0
#endif // LOCAL

#define FOR(i,a,b) for(int i = (a) ; i<(b) ; i++)
#define F0R(i,a) FOR(i,0,a)
#define ROF(i,a,b) for(int i = (b)-1 ; i>=(a) ; i--)
#define R0F(i,a) ROF(i,0,a)
#define each(e,a) for(auto &e : (a))
#define sz(v) (int)(v).size()
#define all(v) (v).begin(),(v).end()
#define rall(v) (v).rbegin(),(v).rend()
#define pb push_back
#define tcT template<class T
#define nl "\n"

using ll = long long;
using vi = vector<int>;
using pi = pair<int,int>;
using str = string;
tcT> using V = vector<T>;
tcT> using pqg = priority_queue<T,vector<T>,greater<T>>;

void setIO(string NAME = "") {
    cin.tie(0)->sync_with_stdio(0);
    if(sz(NAME)) {
        freopen((NAME + ".inp").c_str(),"r",stdin);
        freopen((NAME + ".out").c_str(),"w",stdout);
    }
}

tcT> bool ckmin(T&a, const T&b) {
    return b < a ? a=b,1 : 0; }
tcT> bool ckmax(T&a, const T&b) {
    return b > a ? a=b,1 : 0; }

const int MOD = 1e9 + 7;
const ll INF = 1e18;

tcT> struct SegTree {
    const T ID = -INF; T comb(T a, T b) { return max(a,b); }
    int N; V<T> seg;
    void init(int _N) { for(N = 1;N<_N;) N*=2; seg.assign(2*N, ID); }
    void pull(int p) { seg[p] = comb(seg[p<<1], seg[p<<1|1]); }
    void upd(int p, T val) {
        seg[p += N] = val;
        for(p >>= 1; p>0; p>>=1) pull(p);
    }
    T query(int l, int r) {
        T ra = ID, rb = ID;
        for(l += N, r += N+1; l<r; l>>=1, r>>=1) {
            if(l&1) ra = comb(ra, seg[l++]);
            if(r&1) rb = comb(seg[--r], rb);
        }
        return comb(ra, rb);
    }
};

const int MX = 3e5+5;
int N, M;
V<pair<int,ll>> evn[MX];
multiset<ll> s;

void solve() {
    cin>>N>>M;
    F0R(i,M) {
        int l, r, x;
        cin>>l>>r>>x;
        evn[l].pb({1, x - l});
        evn[r+1].pb({0, x - l});
    }
    FOR(i,1,N+1) {
        each(val, evn[i]) {
            if(val.first) s.insert(val.second);
            else s.erase(s.find(val.second));
        }
        if(s.empty()) cout << "0 ";
        else cout << *s.rbegin() + i << " ";
    }
    cout << nl;
}

int main() {
    setIO();

    int t=1;
    //cin>>t;
    while(t-->0) {
        solve();
    }

    return 0;
}

Compilation message

trading.cpp: In function 'void setIO(std::string)':
trading.cpp:37:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |         freopen((NAME + ".inp").c_str(),"r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
trading.cpp:38:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   38 |         freopen((NAME + ".out").c_str(),"w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 7284 KB Output is correct
2 Correct 5 ms 7252 KB Output is correct
3 Correct 5 ms 7380 KB Output is correct
4 Correct 6 ms 7380 KB Output is correct
5 Correct 5 ms 7508 KB Output is correct
6 Correct 7 ms 7612 KB Output is correct
7 Correct 165 ms 20348 KB Output is correct
8 Correct 180 ms 21288 KB Output is correct
9 Correct 161 ms 22844 KB Output is correct
10 Correct 187 ms 24704 KB Output is correct
11 Correct 235 ms 23492 KB Output is correct
12 Correct 213 ms 27348 KB Output is correct
13 Correct 220 ms 25204 KB Output is correct
14 Correct 219 ms 26812 KB Output is correct
15 Correct 252 ms 29168 KB Output is correct
16 Correct 293 ms 28356 KB Output is correct
17 Correct 271 ms 28960 KB Output is correct
18 Correct 279 ms 32160 KB Output is correct
19 Correct 259 ms 29088 KB Output is correct
20 Correct 308 ms 32308 KB Output is correct