Submission #1201424

#TimeUsernameProblemLanguageResultExecution timeMemory
1201424adiyerPairs (IOI07_pairs)C++20
20 / 100
4094 ms4468 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int N = 1e5 + 11;

ll B, n, k, m, res;
ll a[N], b[N], c[N];

vector < ll > v[100][100];

void solve(){
    cin >> B >> n >> k >> m;
    if(B == 3){
        for(ll i = 1; i <= n; i++) cin >> a[i] >> b[i] >> c[i], v[a[i]][b[i]].push_back(c[i]);
        for(ll i = 1; i <= m; i++)
            for(ll j = 1; j <= m; j++)
                sort(v[i][j].begin(), v[i][j].end());
        for(ll i1 = 1; i1 <= m; i1++){
            for(ll j1 = 1; j1 <= m; j1++){
                for(ll i2 = 1; i2 <= m; i2++){
                    for(ll j2 = 1; j2 <= m; j2++){
                        ll d = k - abs(i1 - i2) - abs(j1 - j2);
                        if(d < 0) continue;
                        for(ll i = 0; i < v[i1][j1].size(); i++){
                            if(v[i2][j2].empty()) continue;
                            ll L, R, l, r;
                            l = -1, r = v[i2][j2].size();
                            while(r - l > 1){
                                ll md = (l + r) / 2;
                                if(v[i2][j2][md] + d >= v[i1][j1][i]) r = md;
                                else l = md;
                            }
                            L = r + 1;
                            l = -1, r = v[i2][j2].size();
                            while(r - l > 1){
                                ll md = (l + r) / 2;
                                if(v[i2][j2][md] - d <= v[i1][j1][i]) l = md;
                                else r = md;
                            }
                            R = l + 1;
                            res += (R - L + 1);
                            // cout << d << ' ' << i1 << ' ' << j1 << ' ' << v[i1][j1][i] << ' ' << i2 << ' ' << j2 << ' ' << (R - L + 1) << '\n';
                        }
                    }
                }
            }
        }
        cout << (res - n) / 2;
    }
}

signed main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int tt = 1;
    // cin >> tt;
    while(tt--) solve();
}
#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...
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...