제출 #424501

#제출 시각아이디문제언어결과실행 시간메모리
424501zoooma13Financial Report (JOI21_financial)C++14
100 / 100
487 ms21588 KiB
#include <bits/stdc++.h>
using namespace std;

#define MAX_N 300005

int par[MAX_N] ,beg[MAX_N];
int fnd(int u){
    return par[u] == u? u : par[u] = fnd(par[u]);
}
void unn(int u ,int v){
    u = fnd(u) ,v = fnd(v);
    if(u == v)
        return;
    par[u] = v;
    beg[v] = min(beg[v] ,beg[u]);
}

int sz ,tree[2*MAX_N];
void upd(int p ,int v){
    for(tree[p+=sz]=v; p>1; p>>=1)
        tree[p>>1] = max(tree[p] ,tree[p^1]);
}
int qry(int l ,int r){
    int res = 0;
    for (l+=sz ,r+=sz+1; l<r; l>>=1 ,r>>=1){
        if(l&1) res = max(res ,tree[l++]);
        if(r&1) res = max(res ,tree[--r]);
    }
    return res;
}

int main()
{
    int n ,d;
    scanf("%d%d",&n,&d) ,sz = n;
    vector <int> a(n);
    for(int&i : a)
        scanf("%d",&i);

    for(int i = 0; i < n; i++)
        par[i] = beg[i] = i;
    vector <int> ord(n);
    iota(ord.begin() ,ord.end() ,0);
    sort(ord.begin() ,ord.end() ,[&](int&i ,int&j){
        return a[i] == a[j]? i > j : a[i] < a[j];
    });

    set <int> added;
    for(int&i : ord){
        auto it = added.insert(i).first;
        if(it != added.begin() && i - *prev(it) <= d)
            unn(*prev(it) ,i);
        upd(i ,qry(beg[fnd(i)] ,i)+1);
        if(next(it) != added.end() && *next(it) - i <= d)
            unn(i ,*next(it));
    }
    printf("%d\n",qry(0 ,n-1));
}

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

Main.cpp: In function 'int main()':
Main.cpp:35:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   35 |     scanf("%d%d",&n,&d) ,sz = n;
      |     ~~~~~^~~~~~~~~~~~~~
Main.cpp:38:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   38 |         scanf("%d",&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...