Submission #872254

#TimeUsernameProblemLanguageResultExecution timeMemory
872254MatjazPairs (IOI07_pairs)C++14
47 / 100
4059 ms7176 KiB
//
//  IOI2007Pairs.cpp
//  
//
//  Created by Matjaz Leonardis on 12/11/2023.
//

#include <iostream>
#include <vector>
#include <stdlib.h>
#include <algorithm>
using namespace std;

int B,N,D,M;

int main(){
    
    cin >> B >> N >> D >> M;
    
    vector<vector<int> > c(N, vector<int> (B));
    
    for (int i=0;i<N;i++){
        for (int j=0;j<B;j++) cin >> c[i][j];
    }
    
    if (B == 1){
        
        long long pairs = 0;
        vector<int> x(N);
        for (int i=0;i<N;i++) x[i] = c[i][0];
        sort(x.begin(), x.end());
        for (int i=0;i<N;i++){
            vector<int>::iterator start = lower_bound(x.begin(), x.end(), x[i] - D);
            vector<int>::iterator end = upper_bound(x.begin(), x.end(), x[i] + D);
            pairs += (end - start) - 1;
        }
        
        cout << pairs / 2 << endl;
        
        
    } else {
        
        long long pairs=0;
        
        for (int i=0;i<N;i++){
            for (int j=i+1;j<N;j++){
                
                long long distance = 0;
                
                for (int k=0;k<B;k++) distance += abs(c[i][k] - c[j][k]);
                
                if (distance <= D) pairs++;
            }
        }
        
        cout << pairs << endl;
    }
    return 0;
}
#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...