제출 #613939

#제출 시각아이디문제언어결과실행 시간메모리
613939Mr_Husanboy고대 책들 (IOI17_books)C++14
50 / 100
168 ms16964 KiB
#include "books.h"
#include<bits/stdc++.h>

using namespace std;
#define all(a) (a).begin(), (a).end()
#define vi vector<int>
#define ff first
#define ss second
#define ll long long


struct Fenwick{
    vector<int> t;
    void init(int n){
        t.resize(n);
    }
    void inc(int i, int d = 1){
        for(; i<t.size(); i|=i+1) t[i] += d;
    }

    int get(int i){
        int res = 0;
        for(; i>=0; i = (i&(i+1))-1) res += t[i];
        return res;
    }

    int get(int l, int r){
        return get(r) - get(l-1);
    }
};

long long minimum_walk(vector<int> p, int s) {
    int n = p.size();
    ll tot = 0;
    Fenwick tr;
    tr.init(n);
    for(int i=0; i<n; i++){
        tot += abs(i - p[i]);
        int mn = min(i, p[i]);
        int mx = max(i, p[i]);
        tr.inc(mn,1); tr.inc(mx,-1);
    }
    int r = n-1;
    while(r >=0 && tr.get(r)==0) r--;
    //cout << r << endl;
 //   cout << "done" << endl;
    ll cnt = 0;
    for(int i = 0; i <=r; i ++){
        cnt += tr.get(i)==0;
    }
    return tot + cnt*2;
}

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

books.cpp: In member function 'void Fenwick::inc(int, int)':
books.cpp:18:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |         for(; i<t.size(); i|=i+1) t[i] += d;
      |               ~^~~~~~~~~
#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...