fork(2) download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <string>
  4. #include<limits>
  5. #include <vector>
  6.  
  7. using namespace std;
  8.  
  9. long long policz_pole(vector<long long> liczby) {
  10. long long x;
  11. long long suma=0;
  12. long long y_dol, index_dol;
  13. long long y_gora, index_gora;
  14. long long rozmiar = liczby.size();
  15. for(long long i=0; i<liczby.size();i+=2) {
  16. x = liczby[i];
  17. index_dol = (((i+1)-2) <= 0) ? (rozmiar - 1) : (i+1)-2;
  18. y_dol = liczby[index_dol];
  19. index_gora = ((i+1)+2) > (rozmiar - 1) ? 1 : ((i+1)+2);
  20. y_gora = liczby[index_gora];
  21. suma += x * (y_dol - y_gora);
  22. //cout << x << " * " << " ( " << y_dol <<" - "<< y_gora <<" ) " << endl;
  23. }
  24. return suma;
  25. }
  26.  
  27. vector<long long> explode( const string &delimiter, const string &str)
  28. {
  29. vector<long long> arr;
  30. long long strleng = str.length();
  31. long long delleng = delimiter.length();
  32. if (delleng==0)
  33. return arr;//no change
  34.  
  35. long long i=0;
  36. long long k=0;
  37. while( i<strleng )
  38. {
  39. long long j=0;
  40. while (i+j<strleng && j<delleng && str[i+j]==delimiter[j])
  41. j++;
  42. if (j==delleng)//found delimiter
  43. {
  44. arr.push_back( strtoll (str.substr(k, i-k).c_str(), NULL, 10) );
  45. i+=delleng;
  46. k=i;
  47. }
  48. else
  49. {
  50. i++;
  51. }
  52. }
  53. arr.push_back( strtoll (str.substr(k, i-k).c_str(), NULL, 10) );
  54. return arr;
  55. }
  56.  
  57. int main()
  58. {
  59. long long liczba_rysonkow;
  60. long long suma_calkowita = 0;
  61. const int koszt_czarnego = 10;
  62. const int koszt_szarego = 6;
  63. long long pole_czarnego = 0;
  64. long long pole_szarego = 0;
  65. long long koszt_calkowity_czarnego, koszt_calkowity_szarego;
  66. string czarne_liczby;
  67. string szare_liczby;
  68. cin >> liczba_rysonkow;
  69. long long *tablica_wynikow = new long long[liczba_rysonkow];
  70. std::cin.clear();
  71. cin.ignore(numeric_limits<streamsize>::max(),'\n');
  72.  
  73. for (int k = 0; k < liczba_rysonkow; k++) {
  74. getline(cin, czarne_liczby);
  75. vector<long long> czarne_tablica = explode(" ", czarne_liczby);
  76.  
  77. getline(cin, szare_liczby);
  78. vector<long long> szare_tablica = explode(" ", szare_liczby);
  79. pole_czarnego = 0.5*abs(policz_pole(czarne_tablica));
  80. pole_szarego = 0.5*abs(policz_pole(szare_tablica));
  81. koszt_calkowity_czarnego = pole_czarnego < pole_szarego ? (0.5*abs(policz_pole(czarne_tablica))) * koszt_czarnego : (0.5*abs(policz_pole(szare_tablica)))*koszt_czarnego;
  82. koszt_calkowity_szarego = pole_czarnego >= pole_szarego ? (0.5*abs(policz_pole(czarne_tablica)) - 0.5*abs(policz_pole(szare_tablica)))*koszt_szarego : (0.5*abs(policz_pole(szare_tablica)) - 0.5*abs(policz_pole(czarne_tablica)))*koszt_szarego;
  83.  
  84. //pole_czarnego = (0.5*abs(policz_pole(szare_tablica)))*koszt_czarnego;
  85. //pole_szarego = (0.5*abs(policz_pole(czarne_tablica)) - 0.5*abs(policz_pole(szare_tablica)))*koszt_szarego;
  86. suma_calkowita = koszt_calkowity_czarnego + koszt_calkowity_szarego;
  87. //cout << "pole czarnego : " << (0.5*abs(policz_pole(czarne_tablica))) << endl;
  88. //cout << "pole szarego : " << (0.5*abs(policz_pole(szare_tablica))) << endl;
  89. tablica_wynikow[k] = suma_calkowita;
  90. }
  91.  
  92. for (int k = 0; k < liczba_rysonkow; k++) {
  93. cout << tablica_wynikow[k] << endl;
  94. }
  95. return 0;
  96. }
  97.  
Success #stdin #stdout 0s 4492KB
stdin
18
5 4 3 8 9 2 2 5 -3 2 6 -4 3 -2 1 9 -9 -4 4 4 -4 3 -1 -5 -6 4 3 0 2 1 9 4 2 0 3 -4 5 4
9 3 0 4 -3 2 5 -6 3 -4 7 6 -3 2 7 -6 8 4 3 -6 9 4 -5 9 1 -1 9 4 7 2 -5 2 7 -8 -3 2 -2 1 0 4 0 5 6 -3 9 3
3634 346 35 346 34 346 34 634543 34634 346 43 346346 87 3 903463 34 34 34632 6346 25626 34578 7894 4326 4372 65357 23632 67432 76321 67622 356 3634 346
89540 34530 349 345 3045 4603 9343 -4563 -435 3423 2343 -3456 353 -3235 -8765 2345 -6322 225 -551525 3632 -62523 63252 -5526 65252 -63236 6332 89540 34530
89540 34530 349 345 3045 4603 9343 -4563 -435 3423 2343 -3456 353 -3235 -8765 2345 -6322 225 -551525 3632 -62523 63252 -5526 65252 -63236 6332 89540 34530
3634 346 35 346 34 346 34 634543 34634 346 43 346346 87 3 903463 34 34 34632 6346 25626 34578 7894 4326 4372 65357 23632 67432 76321 67622 356 3634 346
5 6 7 8 3 -5 2 -6 3 5 5 6
-5 -6 -7 -8 -3 5 -2 6 -3 -5 -5 -6
5 -3 1 4 -6 2 06 3 -2 9 5 -3
6 3 6 2 9 4 6 -2 7 -3 4 0 6 3
09 -05 3 9 04 5 03 5 014 4 5 2 345 23 2 -03 09 -05
9 4 -3 5 -3 43 -53 -3433 35 3 4 -5 -03 2 -2 -5 -4 2 -6 0 9 4
1 7 9 3 1 7
1 7 9 3 1 7
0 5 3 1 5 2 6 9 0 3 6 6 0 5
9 4 3 -7 -2 7 7 4 -6 -7 3 -2 -6 0 9 3 9 4
1 1 1 1
0 5 3 1 5 2 6 9 0 3 6 6 0 5
1 9 1 9
9 4 9 4
5 3 4 5 5 4 6 5 5 3
8 8 6 4 8 0 5 3 2 0 4 4 2 8 5 5 8 8
-1 1 0 0 1 1 0 -1 -1 1
-3 4 0 1 3 4 1 0 3 -4 0 -1 -3 -4 -1 0 -3 4
50000 30000 40000 50000 50000 40000 60000 50000 50000 30000
80000 80000 60000 40000 80000 0 50000 30000 20000 0 40000 40000 20000 80000 50000 50000 80000 80000
-10000 10000 0 0 10000 10000 0 -10000 -10000 10000
-30000 40000 0 10000 30000 40000 10000 0 30000 -40000 0 -10000 -30000 -40000 -10000 0 -30000 40000
8 8 6 4 8 0 5 3 2 0 4 4 2 8 5 5 8 8
5 3 4 5 5 4 6 5 5 3
-3 4 0 1 3 4 1 0 3 -4 0 -1 -3 -4 -1 0 -3 4
-1 1 0 0 1 1 0 -1 -1 1
1 2 2 1 2 2 1 2
0 2 3 0 2 3 0 2
2 3 5 2 3 3 5 4 2 3
1 5 1 3 5 0 3 2 5 1 6 2 4 3 6 3 6 4 7 4 7 1 6 1 6 0 8 0 8 5 1 5
stdout
1360
147855197000
147855197000
240
164
400136
0
512
147
0
88
88
8800000000
8800000000
88
88
23
139