Guest User

Untitled

a guest
Apr 18th, 2017
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. #include<fstream>
  2. #include<deque>
  3. #include<algorithm>
  4. using namespace std;
  5. deque <int> errori;
  6. struct Studenti
  7. {
  8. long int capa;
  9. long int costo;
  10. bool disponibile=true;
  11. }A[100000];
  12.  
  13. bool verifica(int t, deque <int> lista, int numeroerrori, int sommadisponibile, Studenti A[], int numerostudenti)
  14. {
  15. int studentinecessari;
  16. if(numeroerrori%t==0)
  17. studentinecessari=numeroerrori/t;
  18. else studentinecessari=numeroerrori/t+1;
  19. int maggiorecapacita=A[0].capa;
  20. int maggiore;
  21. int conta=0;
  22. for(int j=0;j<studentinecessari;j++)
  23. {
  24. int diff=lista.back();
  25. int i=0;
  26. while(!A[conta].disponibile)
  27. conta++;
  28. if(A[conta].capa>=diff)
  29. {
  30. while(A[i].capa>diff && i<=numerostudenti)
  31. i++;
  32. i--;
  33. sommadisponibile-=A[i].costo;
  34. A[i].disponibile=false;
  35. for(int x=0;x<i;x++)
  36. if(!lista.empty())
  37. lista.pop_back();
  38. }
  39. else return false;
  40. }
  41. if(sommadisponibile>0)
  42. return true;
  43. else return false;
  44. }
  45.  
  46. bool confronta(Studenti &a, Studenti &b)
  47. {
  48. if (a.capa==b.capa)
  49. return a.costo>b.costo;
  50. return a.capa>b.capa;
  51. }
  52.  
  53. int main()
  54. {
  55. ifstream in("input.txt");
  56. ofstream out("output.txt");
  57. int studenti, bug, somma;
  58. in>>studenti>>bug>>somma;
  59. int tmp;
  60. for(int i=0;i<bug;i++)
  61. {
  62. in>>tmp;
  63. errori.push_back(tmp);
  64. }
  65. sort(errori.begin(), errori.end());
  66. for(int i=0;i<studenti;i++)
  67. in>>A[i].capa;
  68. for(int i=0;i<studenti;i++)
  69. in>>A[i].costo;
  70. sort(A, A+studenti, confronta);
  71. if(verifica(bug, errori, bug, somma, A, studenti))
  72. out<<"SI";
  73. else out<<"NO";
  74.  
  75. }
Advertisement
Add Comment
Please, Sign In to add comment