提出 #558424


ソースコード 拡げる

#include <iostream>
#include <cstdio>
#include <string>
#include <map>
#include <set>
#include <vector>
#include <cstring>
#include <algorithm>

using namespace std;
typedef long long ll;
typedef pair<int,int> P;
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define all(c) (c).begin(),(c).end()

inline void fast_erase(vector<P> &vec,P p) {
    auto it=lower_bound(all(vec),p);
    //cout<<p.first<<", "<<p.second<<endl;
    //cout<<it->first<<", "<<it->second<<endl;
    vec.erase(it);
}

int n;
ll cnt(P p,map<P,char> vec, vector<P> xs,vector<P> rxs, vector<P> ys,vector<P> rys) {
    ll ret=1;
    while(1) {
        int x=p.first;
        int y=p.second;
        char c=vec[p];
        vec.erase(p);
        //if(ret==8) break;
        //printf("[debug] %d %d %c\n",x,y,c);

        if(c=='>') {
            auto it=upper_bound(all(ys),P(y,x));
            if(it==ys.end()) break;
            p.first=it->second;
            if(it->first!=p.second) break;
            p.second=it->first;
        }
        if(c=='<') {
            auto it=upper_bound(all(rys),P(y,-x));
            if(it==rys.end()) break;
            p.first=-it->second;
            if(it->first!=p.second) break;
            p.second=it->first;
        }
        if(c=='v') {
            auto it=upper_bound(all(xs),P(x,y));
            if(it==xs.end()) break;
            if(it->first!=p.first) break;
            p=*it;
        }
        if(c=='^') {
            auto it=upper_bound(all(rxs),P(x,-y));
            if(it==rxs.end()) break;
            if(it->first!=p.first) break;
            p=*it;
            p.second*=-1;
        }
        fast_erase(xs,P(x,y));
        fast_erase(ys,P(y,x));
        fast_erase(rxs,P(x,-y));
        fast_erase(rys,P(y,-x));

        ret++;
    }

    return ret;
}
map<P, char> vec;
vector<P> xs;
vector<P> ys;
vector<P> rxs;
vector<P> rys;
int main() {
    cin>>n;
    xs.reserve(n);
    ys.reserve(n);
    rxs.reserve(n);
    rys.reserve(n);
    rep(i,n) {
        int x,y;
        char c;
        cin>>x>>y>>c;
        vec[P(x,y)]=c;
        xs.push_back(P(x,y));
        ys.push_back(P(y,x));
        rxs.push_back(P(x,-y));
        rys.push_back(P(y,-x));
    }
    sort(all(xs));
    sort(all(ys));
    sort(all(rxs));
    sort(all(rys));
    ll ans=0;


    for(const auto &e:vec) {
        const auto &p=e.first;
        ans=max(ans,cnt(p,vec,xs,rxs,ys,rys));
    }
    cout<<ans<<endl;
    return 0;
}

提出情報

提出日時
問題 B - Vector Field
ユーザ MOTA
言語 C++11 (GCC 4.8.1)
得点 0
コード長 2532 Byte
結果 TLE
実行時間 5043 ms
メモリ 1744 KiB

ジャッジ結果

セット名 All
得点 / 配点 0 / 100
結果
AC × 32
TLE × 10
セット名 テストケース
All 00_sample_00, 00_sample_01, 10_sval_Small_00, 10_sval_Small_01, 10_sval_Small_02, 10_sval_Small_03, 10_sval_Small_04, 12_sval_Large_00, 12_sval_Large_01, 12_sval_Large_02, 12_sval_Large_03, 12_sval_Large_04, 20_lval_Small_00, 20_lval_Small_01, 20_lval_Small_02, 20_lval_Small_03, 20_lval_Small_04, 20_lval_Small_05, 20_lval_Small_06, 20_lval_Small_07, 20_lval_Small_08, 20_lval_Small_09, 22_lval_Large_00, 22_lval_Large_01, 22_lval_Large_02, 22_lval_Large_03, 22_lval_Large_04, 22_lval_Large_05, 22_lval_Large_06, 22_lval_Large_07, 22_lval_Large_08, 22_lval_Large_09, 32_NearMax_00, 32_NearMax_01, 32_NearMax_02, 32_NearMax_03, 32_NearMax_04, 32_NearMax_05, 32_NearMax_06, 32_NearMax_07, 32_NearMax_08, 32_NearMax_09
ケース名 結果 実行時間 メモリ
00_sample_00 AC 34 ms 952 KiB
00_sample_01 AC 30 ms 952 KiB
10_sval_Small_00 AC 31 ms 976 KiB
10_sval_Small_01 AC 29 ms 1060 KiB
10_sval_Small_02 AC 30 ms 1160 KiB
10_sval_Small_03 AC 30 ms 952 KiB
10_sval_Small_04 AC 30 ms 1076 KiB
12_sval_Large_00 AC 354 ms 1308 KiB
12_sval_Large_01 AC 911 ms 1460 KiB
12_sval_Large_02 AC 332 ms 1320 KiB
12_sval_Large_03 AC 1133 ms 1484 KiB
12_sval_Large_04 AC 959 ms 1508 KiB
20_lval_Small_00 AC 30 ms 972 KiB
20_lval_Small_01 AC 29 ms 1156 KiB
20_lval_Small_02 AC 30 ms 1044 KiB
20_lval_Small_03 AC 28 ms 1052 KiB
20_lval_Small_04 AC 29 ms 1052 KiB
20_lval_Small_05 AC 29 ms 1112 KiB
20_lval_Small_06 AC 29 ms 1052 KiB
20_lval_Small_07 AC 30 ms 1156 KiB
20_lval_Small_08 AC 30 ms 1056 KiB
20_lval_Small_09 AC 31 ms 1156 KiB
22_lval_Large_00 AC 1697 ms 1580 KiB
22_lval_Large_01 AC 345 ms 1336 KiB
22_lval_Large_02 AC 321 ms 1312 KiB
22_lval_Large_03 AC 488 ms 1412 KiB
22_lval_Large_04 AC 367 ms 1336 KiB
22_lval_Large_05 AC 930 ms 1464 KiB
22_lval_Large_06 AC 1756 ms 1572 KiB
22_lval_Large_07 AC 1208 ms 1504 KiB
22_lval_Large_08 AC 363 ms 1288 KiB
22_lval_Large_09 AC 1620 ms 1568 KiB
32_NearMax_00 TLE 5037 ms 1744 KiB
32_NearMax_01 TLE 5038 ms 1668 KiB
32_NearMax_02 TLE 5037 ms 1672 KiB
32_NearMax_03 TLE 5036 ms 1680 KiB
32_NearMax_04 TLE 5037 ms 1692 KiB
32_NearMax_05 TLE 5040 ms 1664 KiB
32_NearMax_06 TLE 5037 ms 1736 KiB
32_NearMax_07 TLE 5037 ms 1688 KiB
32_NearMax_08 TLE 5036 ms 1652 KiB
32_NearMax_09 TLE 5043 ms 1676 KiB