记录
WA了
#include <iostream>
#include<algorithm>
#include<vector>
#include<cstring>
#include<cstdio>
using namespace std;
int T,n;
signed main(){
cin.tie(0),cout.tie(0),ios::sync_with_stdio(false);
while(scanf("%d",&n)!=EOF){
if(n == 0) cout<<"Possible\n";//没有点的话就能构造
else{
vector<int> v(n);
for(int i = 0; i < n; i++) cin>>v[i];
sort(v.rbegin(), v.rend());//先对于v从大到小排序
// for(auto i:v)cout<<i;
while(v[0] > 0 && v[0] < n) {
for(int i = 1; i <= v[0]; i++) v[i]--;
v[0] = 0;
sort(v.rbegin(), v.rend());
}
if(v.front() != v.back() || v[0] != 0) cout<<"Not possible\n";//只有v[0]没有度(==0) 或者 v的首尾相等才行才行
else cout<<"Possible\n";
}
}
return 0;
}
在双倍经验那一题是能过的