Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("monezi2.in");
- ofstream fout("monezi2.out");
- int n, q, x, suma, p, indice;
- int v[100001];
- bool s[100001];
- int main()
- {
- fin >> n;/// citesc numarul de monezi
- for(int i = 1; i <= n; i++)
- fin >> x, v[i] = v[i-1] + x; // citesc monezile si calculez vectorul de sume partiale
- s[0] = 1;// suma 0 se poate obtine neadunand nici un element
- for(int i = 1; i <= n; i++)// iau fiecare suma
- {
- suma = v[i], indice = 0;
- while(indice + suma <= 100000)// cat timp nu am depasit suma maxima care poate exista
- {
- if(s[indice])// daca pot forma suma din indice
- s[indice + suma] = 1;// atunci se poate forma si suma din indice + suma
- indice++;
- }
- }
- fin >> q;
- for(int i = 1; i <= q; i++)
- {
- fin >> p;
- if(s[p])
- fout << "DA" << '\n';
- else
- fout << "NU" << '\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement