fork download
  1. #include<iostream>
  2.  
  3.  
  4. using namespace std;
  5.  
  6. int a[1000000];
  7. int main(){
  8. int t, i = -1, j;
  9. int n, m;
  10. cin>>t;
  11. while(t--){
  12.  
  13. cin>>n>>m;
  14. // for(int k = 1; k <= n; a[k++] = k);
  15. // for(int k = 1; k <= n; cout<<a[k++]<<" ");
  16. // cout<<endl;
  17. int w[m];
  18. int x[m], y[m], z[m];
  19. while(++i < m){
  20. cin>>w[i]>>x[i]>>y[i]>>z[i];
  21. if(w[i] == 2) z[i] = z[i] * (-1);
  22. }
  23.  
  24. int i, j;
  25. i = -1;
  26. while(++i < m){
  27. j = -1;
  28. a[x[i]] += x[i];
  29. while(++j < m ){
  30. if((x[i] > x[j] && x[i] < y[j])||(i==j))
  31. a[x[i]] += z[j];
  32.  
  33. if((y[i] > x[j] && y[i] < y[j])||(i==j))
  34. a[y[i]] += z[j];
  35.  
  36. }
  37. x[i] = y[i] = 0;
  38. for(int k = 1; k <= n; cout<<a[k++]<<" ");
  39. cout<<"#"<<endl;
  40.  
  41. }
  42. int max = n, min = 1;
  43. for(int i = 0; i < m; ++i){
  44. if(a[x[i]] + x[i] > max)
  45. max = a[x[i]] + x[i];
  46. if(a[x[i]] + x[i] < min)
  47. min = a[x[i]] + x[i];
  48. if(a[y[i]] + y[i]> max)
  49. max = a[y[i]] + y[i];
  50. if(a[y[i]] + y[i]< min)
  51. min = a[y[i]] + y[i];
  52. }
  53. for(int k = 1; k <= n; cout<<a[k++]+k<<" ");
  54. cout<<endl;
  55. cout<<max-min<<endl;
  56. }
  57. return 0;
  58. }
  59.  
  60.  
  61.  
  62.  
Success #stdin #stdout 0.01s 6632KB
stdin
1
10 5
2 1 3 20
1 2 6 30
2 3 8 25
1 5 9 10
2 4 6 20
stdout
-19 0 10 0 0 0 0 0 0 0 #
-19 32 10 0 0 15 0 0 0 0 #
-19 32 -12 0 0 15 0 -15 0 0 #
-19 32 -12 0 -5 15 0 -15 10 0 #
-19 32 -12 -16 -5 -5 0 -15 10 0 #
-18 34 -9 -12 0 1 7 -7 19 10 
10