Codeforces Round #371 (Div. 2) B. Filya and Homework STL(map or set)

ProLightsfx 2016-9-15 117 9/15
B. Filya and Homework STL(map or set)

Source

Codeforces Round #371 (Div. 2)

 

My Solution

STL(map or set)

把所有的数丢进一个map,

然后如果 mp.size()  > 3 必然 NO;

如果 mp.size() <= 2 必然 YES;   //如果是 1 则 x = 0, 如果 是 2 则  x = 大 - 小

如果 mp.size() == 3 则 如果 大 + 小 = 2 * 中 则 YES, 否则 NO;

 

#include 
#include 
#include 


#include 
#include 
#include 
using namespace std;
typedef long long LL;
const int maxn = 1e5 + 8;

LL val[maxn];
map<LL, LL> mp;
vector vec;
int main()
{
    #ifdef LOCAL
    freopen("b.txt", "r", stdin);
    //freopen("o.txt", "w", stdout);
    int T = 4;
    while(T--){
    #endif // LOCAL
    ios::sync_with_stdio(false); cin.tie(0);

    int n;
    LL a = -1, b = -1, c = -1;
    cin >> n;
    for(int i = 0; i < n; i++){ cin >> val[i];
        mp[val[i]]++;
    }
    if(mp.size() > 3) cout << "NO" << endl;
    else{
        if(mp.size() == 1) cout << "YES" << endl;
        else if(mp.size() == 2){
            cout << "YES" << endl; } else if(mp.size() == 3){ for(auto i = mp.begin(); i != mp.end(); i++){ vec.push_back(i->first);
            }
            sort(vec.begin(), vec.end());
            if(vec[0] + vec[2] != 2 * vec[1]) cout << "NO" << endl;
            else cout << "YES" << endl;
        }
    }



    #ifdef LOCAL
    mp.clear();
    vec.clear();
    cout << endl;
    }
    #endif // LOCAL
    return 0;
}

 


非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

https://www.prolightsfxjh.com/

Thank you!

                                                                                                                                             ------from ProLightsfx

- THE END -

ProLightsfx

11月15日20:48

最后修改:2024年11月15日
0

非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

共有 0 条评论