yukicoder No.406 鴨等間隔の法則
問題概要
隣合う二点間の距離がすべて等しいかを見分ける。
解法
x座標がソートされていないのでまずはソートする。そのあと、順番に隣り合う区間の距離が等しいかを見ていけばいい。私は、x0とx1の距離を出しておいて、その値と他の隣り合う2点間の距離が等しいかを調べた。
ミス
特になし。
コード
#include <iostream> #include <algorithm> #include <vector> using namespace std; #define rep(i,n) for(int i=0;i<(n);i++) int main(void){ int n; cin >> n; vector<int> x(n); rep(i, n) cin >> x[i]; sort(x.begin(), x.end()); int sa = x[1] - x[0];//一つの場所の差を求めておく if(sa == 0){//同じ位置にある printf("NO\n"); return 0; } for (int i = 1; i < n - 1; ++i){ if(sa != x[i + 1] - x[i]){//2点間の距離が異なる printf("NO\n"); return 0; } } printf("YES\n"); return 0; }