結果

問題 No.808 Kaiten Sushi?
ユーザー SugarDragon5
提出日時 2019-03-22 22:40:03
言語 C++14
(gcc 9.3.0)
結果
AC  
実行時間 664 ms
コード長 2,228 Byte
コンパイル時間 1,584 ms
使用メモリ 31,956 KB
最終ジャッジ日時 2020-02-03 21:09:36

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
0_small1.txt AC 0 ms
3,280 KB
0_small2.txt AC 0 ms
3,300 KB
0_small4.txt AC 4 ms
3,208 KB
0_small5.txt AC 4 ms
3,212 KB
0_small6.txt AC 0 ms
3,184 KB
0_small7.txt AC 0 ms
3,184 KB
0_small8.txt AC 4 ms
3,300 KB
1_best_middle1.txt AC 4 ms
3,572 KB
1_best_middle2.txt AC 8 ms
3,740 KB
1_middle1.txt AC 12 ms
4,056 KB
1_middle2.txt AC 4 ms
3,716 KB
1_middle3.txt AC 4 ms
3,668 KB
1_middle4.txt AC 8 ms
3,684 KB
1_middle5.txt AC 4 ms
3,700 KB
1_middle6.txt AC 4 ms
3,308 KB
1_middle7.txt AC 8 ms
3,964 KB
1_middle8.txt AC 8 ms
3,704 KB
1_rev_middle1.txt AC 4 ms
3,460 KB
1_rev_middle2.txt AC 4 ms
3,420 KB
1_rev_middle3.txt AC 0 ms
3,336 KB
1_straight_middle1.txt AC 0 ms
3,352 KB
1_straight_middle2.txt AC 4 ms
3,248 KB
1_straight_middle3.txt AC 0 ms
3,400 KB
2_best_large2.txt AC 132 ms
14,088 KB
2_best_large.txt AC 100 ms
11,740 KB
2_best_rev_large1.txt AC 108 ms
13,412 KB
2_best_rev_large2.txt AC 108 ms
12,852 KB
2_large_negative1.txt AC 368 ms
26,540 KB
2_large_negative2.txt AC 100 ms
10,116 KB
2_large_negative3.txt AC 336 ms
25,532 KB
2_large_negative4.txt AC 204 ms
17,604 KB
2_large_negative5.txt AC 388 ms
27,832 KB
2_largest_rand1.txt AC 444 ms
31,072 KB
2_largest_rand2.txt AC 204 ms
17,472 KB
2_largest_rand3.txt AC 236 ms
19,624 KB
2_largest_rand4.txt AC 300 ms
23,088 KB
2_largest_rand5.txt AC 212 ms
17,088 KB
best_rev_middle1.txt AC 0 ms
3,220 KB
best_rev_middle2.txt AC 0 ms
3,280 KB
large1.txt AC 484 ms
29,180 KB
large2.txt AC 96 ms
9,156 KB
large3.txt AC 100 ms
10,048 KB
large4.txt AC 404 ms
24,636 KB
large5.txt AC 140 ms
12,600 KB
large6.txt AC 296 ms
19,736 KB
large7.txt AC 140 ms
12,580 KB
large8.txt AC 72 ms
8,028 KB
largest1.txt AC 664 ms
31,804 KB
largest2.txt AC 652 ms
31,956 KB
largest3.txt AC 648 ms
31,804 KB
largest4.txt AC 644 ms
31,860 KB
largest5.txt AC 664 ms
31,860 KB
rev_large1.txt AC 244 ms
23,508 KB
rev_large2.txt AC 344 ms
31,072 KB
sample1.txt AC 4 ms
3,176 KB
sample2.txt AC 0 ms
3,180 KB
sample3.txt AC 0 ms
3,220 KB
straight_large1.txt AC 104 ms
13,056 KB
straight_large2.txt AC 180 ms
18,144 KB
テストケース一括ダウンロード

ソースコード

diff #
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define FOR(i,n,m) for(int i=(n);i<(m);i++)
#define REP(i,n) for(int i=0;i<(n);i++)
#define REPR(i,n) for(int i=(n);i>=0;i--)
#define all(vec) vec.begin(),vec.end()
using vi=vector<int>;
using vvi=vector<vi>;
using vl=vector<ll>;
using vvl=vector<vl>;
using P=pair<ll,ll>;
using PP=pair<ll,P>;
using vp=vector<P>;
using vpp=vector<PP>;
using vs=vector<string>;
#define fi first
#define se second
#define pb push_back
template<class T>bool chmax(T &a,const T &b){if(a<b){a=b;return true;}return false;}
template<class T>bool chmin(T &a,const T &b){if(a>b){a=b;return true;}return false;}
template<typename A,typename B>istream&operator>>(istream&is,pair<A,B> &p){is>>p.fi>>p.se;return is;}
template<typename A,typename B>ostream&operator<<(ostream&os,const pair<A,B> &p){os<<"("<<p.fi<<","<<p.se<<")";return os;}
template<typename T>istream&operator>>(istream&is,vector<T> &t){REP(i,t.size())is>>t[i];return is;}
template<typename T>ostream&operator<<(ostream&os,const vector<T>&t){os<<"{";REP(i,t.size()){if(i)os<<",";os<<t[i];}cout<<"}";return os;}
const ll MOD=1000000007LL;
const int INF=1<<30;
const ll LINF=1LL<<60;
int main(){
    int n,l;
    cin>>n>>l;
    vi x(n);
    cin>>x;
    vi y(n);
    cin>>y;
    set<int> a,b;
    REP(i,n){
        a.insert(x[i]);
        a.insert(x[i]+l);
        a.insert(x[i]+l*2);
        b.insert(y[i]);
        b.insert(y[i]+l);
        b.insert(y[i]+l*2);
    }
    int now=0;
    ll ans=0;
    REP(i,n){
        if(i==n-1){
            int p=*a.lower_bound(now);
            ans+=p-now;
            now=p%l;
            int q=*b.lower_bound(now);
            ans+=q-now;
        }else{
            int p=*a.lower_bound(now);
            int q=*b.upper_bound(p);
            int r=*(--a.upper_bound(q));
            a.erase(r%l);
            a.erase(r%l+l);
            a.erase(r%l+l*2);
            ans+=r-now;
            now=r%l;
            p=*b.lower_bound(now);
            q=*a.upper_bound(p);
            r=*(--b.upper_bound(q));
            b.erase(r%l);
            b.erase(r%l+l);
            b.erase(r%l+l*2);
            ans+=r-now;
            now=r%l;
        }
    }
    cout<<ans<<endl;
    return 0;
}
0