fork download
  1. #include <bits/stdc++.h>
  2. typedef long long ll;
  3. using namespace std;
  4. ll loc[100001], dp[2501][2501];
  5. int main() {
  6.  
  7. //Fast I/O
  8. ios_base::sync_with_stdio(0);
  9. cin.tie(0); cout.tie(0);
  10.  
  11. memset(loc, -1, sizeof(loc));
  12. memset(dp, -1, sizeof(dp));
  13.  
  14. ll n, i, j, prevElem, diff, prevInd;
  15. cin >> n;
  16. ll a[n];
  17. for(i=0; i<n; i++) {
  18. cin >> a[i];
  19. loc[a[i]] = i;
  20. }
  21. sort(a, a+n);
  22. for(i=0; i<n; i++) {
  23. for(j=0; j<n; j++) {
  24. diff = a[j]-a[i];
  25. prevElem = a[i]-diff;
  26. if(i == 0)
  27. dp[i][j] = 2;
  28. else {
  29. if(prevElem > 0) {
  30. if(loc[prevElem] != -1)
  31. dp[i][j] = dp[loc[prevElem]][i] + 1;
  32. else
  33. dp[i][j] = 2;
  34. }
  35. else
  36. dp[i][j] = 2;
  37. }
  38. }
  39. }
  40.  
  41. for(i=0; i<n; i++) {
  42. for(j=0; j<n; j++) {
  43. cout << dp[i][j] << " ";
  44. }
  45. cout << endl;
  46. }
  47.  
  48. return 0;
  49. }
  50.  
  51.  
Success #stdin #stdout 0.01s 53244KB
stdin
7 15 8 10 20 17 13 5
stdout
2 2 2 2 2 2 2 
2 0 2 2 2 2 2 
3 2 0 2 0 2 2 
2 2 2 0 2 2 2 
2 2 3 0 3 0 1 
2 2 2 2 2 1 2 
2 2 2 2 2 2 3