https://www.luogu.com.cn/problem/P5728
題目描述
現有 N(N≤1000) 名同學參加了期末考試,並且獲得了每名同學的信息:語文、數學、英語成績(均爲不超過 150 的自然數)。如果某對學生 <i,j> 的每一科成績的分差都不大於 5,且總分分差不大於 10,那麼這對學生就是“旗鼓相當的對手”。現在想知道這些同學中,有幾對“旗鼓相當的對手”?同樣一個人可能會和其他好幾名同學結對。
輸入格式
第一行一個正整數 N。
接下來 N 行,每行三個整數,其中第 i 行表示第 i 名同學的語文、數學、英語成績。最先讀入的同學編號爲 1。
輸出格式
輸出一個個整數,表示“旗鼓相當的對手”的對數。
輸入輸出樣例
輸入 #1 複製
3
90 90 90
85 95 90
80 100 91
輸出 #1 複製
2
結構體用的爽歪歪
#include<bits/stdc++.h>
using namespace std;
#define N 1005
struct node{
int chinese, math, english, s;
}a[N];
int cnt;
int main(){
int n;
cin >> n;
for(int i=1; i<=n; ++i){
cin >> a[i].chinese >> a[i].math >> a[i].english;
a[i].s = a[i].chinese + a[i].math + a[i].english;
}
for(int i=1; i<=n; ++i){
for(int j=i+1; j<=n; ++j){
if(abs(a[i].chinese - a[j].chinese) <= 5 && abs(a[i].math - a[j].math) <= 5 && abs(a[i].english - a[j].english) <= 5 && abs(a[i].s - a[j].s) <= 10)
++cnt;
}
}
cout << cnt;
return 0;
}