제출 #723800

#제출 시각아이디문제언어결과실행 시간메모리
723800kktsPinball (JOI14_pinball)C++17
100 / 100
239 ms14520 KiB
#include<bits/stdc++.h>
#define f first
#define s second
#define int long long
#define pii pair<int,int>
using namespace std;
const int N = 3e5 + 5, mod = 1e9 + 7; // !
int tl[N], tr[N], M;
int getl(int id) {
    int mn = 1e18;
    for(id; id <= M; id += id & (-id)) mn = min(mn, tl[id]);
    return mn;
}
int getr(int id) {
    int mn = 1e18;
    for(id; id >= 1; id -= id & (-id)) mn = min(mn, tr[id]);
    return mn;
}
void updl(int id, int val) {
    for(id; id >= 1; id -= id & (-id)) tl[id]= min(tl[id], val);
}
void updr(int id, int val) {
    for(id; id <= M; id += id & (-id)) tr[id] = min(tr[id], val);
}
main(){
    int m, n;
    cin >> m >> n;
    vector<int> a(m + 2), b(m + 2), c(m + 2), d(m + 2);
    vector<int> x;
    for(int i = 1; i <= m; i++) {
        cin >> a[i] >> b[i] >> c[i] >> d[i];
        x.push_back(a[i]);
        x.push_back(b[i]);
        x.push_back(c[i]);
    }
    x.push_back(1);
    x.push_back(n);
    sort(x.begin(), x.end());
    x.erase(unique(x.begin(), x.end()), x.end());
    M = x.size();
    for(int i = 1; i <= M; i++) tl[i] = tr[i] = 1e18;
    int ans = 1e18;
    updl(1, 0);
    updr(x.size(), 0);
    for(int i = 1; i <= m; i++) {
        a[i] = lower_bound(x.begin(), x.end(), a[i]) - x.begin() + 1;
        b[i] = lower_bound(x.begin(), x.end(), b[i]) - x.begin() + 1;
        c[i] = lower_bound(x.begin(), x.end(), c[i]) - x.begin() + 1;

        int L = getl(a[i]), R = getr(b[i]);
        ans = min(ans, L + R + d[i]);
        updl(c[i], L + d[i]);
        updr(c[i], R + d[i]);
    }
    cout << (ans == 1e18 ? -1 : ans);
 }

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

pinball.cpp: In function 'long long int getl(long long int)':
pinball.cpp:11:9: warning: statement has no effect [-Wunused-value]
   11 |     for(id; id <= M; id += id & (-id)) mn = min(mn, tl[id]);
      |         ^~
pinball.cpp: In function 'long long int getr(long long int)':
pinball.cpp:16:9: warning: statement has no effect [-Wunused-value]
   16 |     for(id; id >= 1; id -= id & (-id)) mn = min(mn, tr[id]);
      |         ^~
pinball.cpp: In function 'void updl(long long int, long long int)':
pinball.cpp:20:9: warning: statement has no effect [-Wunused-value]
   20 |     for(id; id >= 1; id -= id & (-id)) tl[id]= min(tl[id], val);
      |         ^~
pinball.cpp: In function 'void updr(long long int, long long int)':
pinball.cpp:23:9: warning: statement has no effect [-Wunused-value]
   23 |     for(id; id <= M; id += id & (-id)) tr[id] = min(tr[id], val);
      |         ^~
pinball.cpp: At global scope:
pinball.cpp:25:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   25 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...