fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define endl "\n"
  6. typedef long long int ll;
  7. typedef vector<int> vi;
  8.  
  9. int main(){
  10. int t;
  11. cin>>t;
  12.  
  13. for(int testcase=0; testcase<t; testcase++){
  14. int n; cin>>n;
  15.  
  16. uint64_t sum = n*(n+1);
  17. sum = sum/2;
  18.  
  19. vi pre(n+1);
  20.  
  21. bool f = true;
  22. for (int i = 1; i <= n-1; i++)
  23. {
  24. // int tttt;
  25. cin>>pre[i];
  26. if(pre[i]>sum) f=false;
  27. }
  28. cout<<"working ";
  29.  
  30. // pre.push_back(0);
  31.  
  32. //--------------------------------------------
  33.  
  34. vi res(2*n + 1);
  35.  
  36. if(pre[n-1]!=sum){
  37. pre[n] = sum;
  38.  
  39. vi chkvec(n+1,0);
  40. ++chkvec[pre[1]];
  41. for (int i = 1; i <=n; i++)
  42. {
  43. ++chkvec[pre[i] - pre[i-1]];
  44. // chkvec.push_back(pre[i] - pre[i-1]);
  45. // if(chkvec[tt]>2) {f=false; break;}
  46. }
  47.  
  48. for(int p = 1; p<=n; p++){
  49. if(chkvec[p]!=1) f = false;
  50. }
  51. // cout<<chkvec.size();
  52. }
  53.  
  54. else{
  55. // cout<<"else me hu";
  56. for (int i = 1; i <= n-1; i++)
  57. {
  58. int tt = pre[i] - pre[i-1];
  59.  
  60. ++res[tt];
  61. if(res[tt]>1) {f=false; break;}
  62. }
  63. }
  64.  
  65. if(f) cout<<"YES"<<endl;
  66. else cout<<"NO"<<endl;
  67. }
  68.  
  69. return 0;
  70. }
Success #stdin #stdout 0s 5292KB
stdin
1
3
1 2
stdout
working NO