QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#526965#1965. Triosroid_03#RE 0ms0kbC++143.8kb2024-08-22 03:37:522024-08-22 03:37:52

Judging History

你现在查看的是最新测评结果

  • [2024-08-22 03:37:52]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:0kb
  • [2024-08-22 03:37:52]
  • 提交

answer

// by Siddhid Saha (2112010)


#include <bits/stdc++.h>
#include <map>
using namespace std;

#define INF 1e18
#define endl "\n"
#define pb push_back
#define ppb pop_back
#define mp make_pair
#define PI atan(1)*4
#define set_bits __builtin_popcountllO
#define all(x) (x).begin(), (x).end()
#define vi vector<int>
#define vll vector<ll>
#define pll pair<ll,ll>
#define rvsort(a) sort(all(a),greater<int>())
#define read(a,n) for(int i = 0 ; i < n ; i ++){ cin >> a[i];}
#define printv(a) for(auto it: a){cout << it << " ";} cout << endl;
#define ms(arr, v) memset(arr, v, sizeof(arr))

typedef long long ll;
typedef unsigned long long ull;
typedef long double lld;

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

#ifndef ONLINE_JUDGE
#include "/Users/templates/debug.h"
#else
#define dbg(x...)
#endif
/*---------------------------------------------------------------------------------------------------------------------------*/
ll gcd(ll a, ll b) {if (b > a) {return gcd(b, a);} if (b == 0) {return a;} return gcd(b, a % b);}
ll expo(ll a, ll b, ll mod) {ll res = 1; while (b > 0) {if (b & 1)res = (res * a) % mod; a = (a * a) % mod; b = b >> 1;} return res;}
void extendgcd(ll a, ll b, ll*v) {if (b == 0) {v[0] = 1; v[1] = 0; v[2] = a; return ;} extendgcd(b, a % b, v); ll x = v[1]; v[1] = v[0] - v[1] * (a / b); v[0] = x; return;} //pass an arry of size1 3
ll mminv(ll a, ll b) {ll arr[3]; extendgcd(a, b, arr); return arr[0];} //for non prime b
ll mminvprime(ll a, ll b) {return expo(a, b - 2, b);}
void google(int t) {cout << "Case #" << t << ": ";}
vector<ll> sieve(int n) {int*arr = new int[n + 1](); vector<ll> vect; for (int i = 2; i <= n; i++)if (arr[i] == 0) {vect.push_back(i); for (int j = 2 * i; j <= n; j += i)arr[j] = 1;} return vect;}
ll phin(ll n) {ll number = n; if (n % 2 == 0) {number /= 2; while (n % 2 == 0) n /= 2;} for (ll i = 3; i <= sqrt(n); i += 2) {if (n % i == 0) {while (n % i == 0)n /= i; number = (number / i * (i - 1));}} if (n > 1)number = (number / n * (n - 1)) ; return number;} //O(sqrt(N))
ll uid(ll l, ll r) {return uniform_int_distribution<ll>(l, r)(rng);} 
/*--------------------------------------------------------------------------------------------------------------------------*/
//const int mod = 1e9 + 7;
//const int mod = 998244353; 


void solve()
{
    ll n; cin >> n;
    vll a(n); read(a,n);
    vll cnt(n+1);
    ll ans = 0;
    for (int i = 0; i < n; i++) {
        string sx = to_string(a[i]);
        for (int j = i + 1; j < n; j++) {
            vector<pll> vals;
            vals.pb({0, 1});
            string t = to_string(a[j]);
            for (int d = 0; d < 4; d++) {
                if (sx[4-d-1] != t[4-d-1]) {
                    vector<pll> tmp;
                    for (auto [x, y] : vals) {
                        tmp.pb({x, y});
                        tmp.pb({x + (sx[4-d-1]-'0') * powl(10, d), -y});
                        tmp.pb({x + (t[4-d-1]-'0')* powl(10, d), -y});
                    }
                    vals = tmp;
                } else {
                    for (auto &[x, y] : vals) {
                        x += powl(10, d) * (sx[4-d-1]-'0');
                    }
                }
            }
            for (auto [x, y] : vals) {
                ans += cnt[x] * y;
            }
        }
        for (int s = 0; s < (1LL<< 4); s++) {
            ll x = 0;
            for (int d = 0; d < 4; d++) {
                x += (s&(1LL<<d) ? sx[4-d-1]-'0' : 0) * powl(10, d);
            }
            cnt[x]++;
        }
    }
    cout << ans << endl;
}

int main() {

ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);


ll t = 1;
// cin >> t;
for(int i = 1 ; i <= t ; i++){
//google(i);
solve();
}
return 0;
}









詳細信息

Test #1:

score: 0
Runtime Error

input:

4
1234
2345
3456
4567

output:


result: