提出 #28176593


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")

const int MOD = (1e9+7);
void printmat(const vector<vector<int>>& mat) {
    for (auto row : mat) {
        for (auto elem : row)
            cout << elem << " ";
        cout << endl;
    }
}
void printv(const vector<int>& v) {
    for (auto elem : v)
        cout << elem << " ";
    cout << endl;
}
void printd(const deque<int>& v) {
    for (auto elem : v)
        cout << elem << " ";
    cout << endl;
}
void printvp(const vector<pair<int,int>>& vp) {
    for (auto pr : vp) {
        cout << pr.first << ", " << pr.second;
        cout << endl;
    }
}
void printvs(const vector<set<int>>& vs) {
    for (auto row : vs) {
        for (auto elem : row)
            cout << elem << ", ";
        cout << endl;
    }
}
void printht(const unordered_map<int, int>& ht) {
    for (auto elem : ht)
        cout << elem.first << " : " << elem.second << endl;
}
void printmp(const map<ll, ll>& ht) {
    for (auto elem : ht)
        cout << elem.first << " : " << elem.second << endl;
}
void printst(const set<int>& st) {
    for (auto elem : st)
        cout << elem << " ";
    cout << endl;
}
 
bool isPrime(long long n) {
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;
    if (n % 2 == 0 || n % 3 == 0)
        return false;
    for (long long i = 5; i * i <= n; i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
    return true;
}
 
map<long long, long long> primeFactors(long long n) {
    map<long long, long long> ans;
    while (n % 2 == 0) {
        ans[2]++;
        n = n/2;
    }
    for (long long i = 3; i*i <= (n); i = i + 2) {
        while (n % i == 0) {
            ans[i]++;
            n = n/i;
        }
    }
    if (n > 2)
        ans[n]++;
    return ans;
}
 
int find_f(const vector<int>& uf, int i) {
    while (uf[i]!=i)
        i = uf[i];
    return i;
}
bool union_f(vector<int>& uf, vector<int>& sz, int a, int b) {
    a = find_f(uf, a);
    b = find_f(uf, b);
    //cout << "a, b = " << a << ", " << b << endl;
    if (a==b) return false;
    if (sz[a] < sz[b]) {
        //cout << "sz[a], sz[b] = " << sz[a] << ", " << sz[b] << endl;
        //cout << "a, b = " << a << ", " << b << endl;
        swap(a,b);
        //cout << "a, b = " << a << ", " << b << endl;
    }
    sz[a] += sz[b];
    uf[b] = a;
    return true;
}

long long modexp(long long b, long long e, long long M) {
    if (!e) return 1;
    b %= M;
    long long x = modexp(b * b % M, e / 2, M);
    if (e % 2) {
        return b * x % M;
    } else {
        return x;
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);    
    int T=1, caseIdx=0;
    //cin >> T;
    while (T--) {
        //caseIdx++;
        int n, q;
        cin >> n;
        vector<int> vr(n), vc(n);
        vector<pair<int,int>> wp(n+1);
        for (int i=0; i<n; i++) {
            cin >> vr[i];
            wp[vr[i]].first = i;
        }
        for (int i=0; i<n; i++) {
            cin >> vc[i];
            wp[vc[i]].second = i;
        }
        //printvp(wp);
        //printv(vr); printv(vc); 
        cin >> q;
        vector<pair<int,int>> vp(q);
        vector<vector<int>> matr(q), matc(q);
        for (int i=0; i<q; i++) {
            int r, c;
            cin >> r >> c;
            vp[i].first = r-1;
            vp[i].second = c-1;
            matr[r-1].push_back(i);
            matc[c-1].push_back(i);
        }
        string ans(q, '$');
        int i=1, j=n;
        while (i<=j) {
            int ri = wp[i].first;
            int ci = wp[i].second;
            int rj = wp[j].first;
            int cj = wp[j].second;
            //cout << "rj, cj = " << rj << ", " << cj << endl;    
#if 0            
            for (int qidx=0; qidx<q; qidx++) { 
                if (vp[qidx].first==rj || vp[qidx].second==cj) {
                    if (ans[qidx]=='$')
                        ans[qidx] = '#';
                } else if (vp[qidx].first==ri || vp[qidx].second==ci) {
                    if (ans[qidx]=='$')
                        ans[qidx] = '.';
                }
            }
#else
            for (int qidx : matr[rj]) {
                if (ans[qidx]=='$')
                    ans[qidx] = '#';
            }
            for (int qidx : matc[cj]) {
                if (ans[qidx]=='$')
                    ans[qidx] = '#';
            }
            for (int qidx : matr[ri]) {
                if (ans[qidx]=='$')
                    ans[qidx] = '.';
            }
            for (int qidx : matc[ci]) {
                if (ans[qidx]=='$')
                    ans[qidx] = '.';
            }
#endif
            
            i++; j--;
        }
        cout << ans << "\n";
    }
}


提出情報

提出日時
問題 A - Permutation Grid
ユーザ llc5pg
言語 C++ (GCC 9.2.1)
得点 400
コード長 4993 Byte
結果 AC
実行時間 64 ms
メモリ 16552 KiB

コンパイルエラー

./Main.cpp:6: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
    6 | #pragma GCC optimization ("O3")
      | 
./Main.cpp: In function ‘int main()’:
./Main.cpp:118:14: warning: unused variable ‘caseIdx’ [-Wunused-variable]
  118 |     int T=1, caseIdx=0;
      |              ^~~~~~~

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 400 / 400
結果
AC × 1
AC × 17
セット名 テストケース
Sample sample1.txt
All all.txt, edge_0.txt, edge_0_2.txt, edge_1.txt, edge_1_2.txt, random.txt, random_10.txt, random_11.txt, random_2.txt, random_3.txt, random_4.txt, random_5.txt, random_6.txt, random_7.txt, random_8.txt, random_9.txt, sample1.txt
ケース名 結果 実行時間 メモリ
all.txt AC 25 ms 10244 KiB
edge_0.txt AC 64 ms 16552 KiB
edge_0_2.txt AC 55 ms 15388 KiB
edge_1.txt AC 57 ms 16196 KiB
edge_1_2.txt AC 57 ms 15144 KiB
random.txt AC 62 ms 14060 KiB
random_10.txt AC 57 ms 14268 KiB
random_11.txt AC 58 ms 14020 KiB
random_2.txt AC 58 ms 13956 KiB
random_3.txt AC 60 ms 14056 KiB
random_4.txt AC 58 ms 14336 KiB
random_5.txt AC 55 ms 13744 KiB
random_6.txt AC 58 ms 13956 KiB
random_7.txt AC 56 ms 13596 KiB
random_8.txt AC 58 ms 14068 KiB
random_9.txt AC 55 ms 13748 KiB
sample1.txt AC 2 ms 3544 KiB