Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. ifstream in("sclm.in");
  5. ofstream out("sclm.out");
  6. int n,a[3000],L[3000],urm[3000];
  7. int main(){
  8. int i,j;
  9. in>>n;
  10. for(i=1;i<=n;i++)
  11. in>>a[i];
  12. L[n]=1;
  13. urm[n]=-1;
  14. for(i=n-1;i>0;i--)
  15. {
  16. L[i]=1;
  17. urm[i]=-1;
  18. for(j=i+1;j<=n;j++)
  19. if(a[i]<=a[j]&&L[i]<L[j]+1)
  20. {
  21. L[i]=L[j]+1,
  22. urm[i]=j;
  23. }
  24. }
  25. int pmax=1;
  26. for(i=1;i<=n;i++)
  27. if(L[pmax]<L[i])
  28. pmax=i;
  29. out<<L[pmax]<<endl;
  30. for(i=pmax;i!=-1;i=urm[i])
  31. out<<i<<" ";
  32. return 0;
  33. }
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41. #include <iostream>
  42. #include <fstream>
  43. #include <cstring>
  44.  
  45. using namespace std;
  46.  
  47. ifstream in("lungimesubsircomunmaximal.in");
  48. ofstream out("lungimesubsircomunmaximal.out");
  49.  
  50. int d[1003][1003];
  51. char s1[1003],s2[1003],rez[1003];
  52.  
  53. int main()
  54. {
  55. int m,n,i,j,e;
  56. in>>s1>>s2;
  57. //daca citesti mil sugi
  58. n=strlen(s1);
  59. m=strlen(s2);
  60. for(i=1 ; i<=n ; i++)
  61. for(j=1 ; j<=m ; j++)
  62. if(s1[i-1]==s2[j-1])
  63. d[i][j]=d[i-1][j-1]+1;
  64. else
  65. d[i][j]=max(d[i-1][j],d[i][j-1]);
  66.  
  67. out<<d[n][m];
  68.  
  69.  
  70.  
  71. }
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81. #include <iostream>
  82. #include <algorithm>
  83. #include <fstream>
  84. using namespace std;
  85. ifstream f("plopi1.in");
  86. ofstream g("plopi1.out");
  87. int n,a[100000],L[100000];
  88. int main()
  89. {
  90. f>>n;
  91. for(int i=1;i<=n;i++)
  92. f>>a[i];
  93. L[n]=1;
  94. for(int i=n-1;i>0;i--)
  95. {
  96. L[i]=1;
  97. for(int j=i+1;j<=n;j++)
  98. if(a[i]>a[j] && L[i]<L[j]+1)
  99. L[i]=L[j]+1;
  100. }
  101. int pmax=1;
  102. for(int i=1;i<=n;i++)
  103. if(L[pmax]<=L[i])
  104. pmax=i;
  105. g<<n-L[pmax];
  106. }
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113. #include <bits/stdc++.h>
  114. using namespace std;
  115. const int mod = 666013;
  116. map<int, bool> M;
  117. map<int, int> poz;
  118. int aib[111][111111], x, n, K, res, cnt;
  119. inline void Update(int k, int poz, int val)
  120. {
  121. for (int i = poz; i <= n; i += i & -i)
  122. {
  123. aib[k][i] += val;
  124. if (aib[k][i] > mod)
  125. aib[k][i] -= mod;
  126. }
  127. }
  128. inline int Query(int k, int poz)
  129. {
  130. int s = 0;
  131. for (int i = poz; i > 0; i -= i & -i)
  132. {
  133. s += aib[k][i];
  134. if (s > mod)
  135. s -= mod;
  136. }
  137. return s;
  138. }
  139. int main()
  140. {
  141. ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
  142. cin >> n >> K;
  143. vector<int> v(n + 1);
  144. for (int i = 1; i <= n; ++i)
  145. cin >> v[i], M[v[i]] = true;
  146. for (const auto& p : M)
  147. poz[p.first] = ++cnt;
  148. for (int i = 1; i <= n; ++i)
  149. v[i] = poz[v[i]];
  150. for (int i = 1; i <= n; ++i)
  151. {
  152. Update(1, v[i], 1);
  153. for (int k = 2; k <= K; ++k)
  154. Update(k, v[i], Query(k - 1, v[i] - 1));
  155. }
  156. cout << Query(K, n);
  157. return 0;
  158. }
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166. #include <iostream>
  167. #include <algorithm>
  168. using namespace std;
  169. int n,GMax,greutate[5001],profit[5001];
  170. int C[1001][10001];
  171. int main()
  172. {
  173. int i,j;
  174. cin>>n>>GMax;
  175. for(i = 1 ; i <= n ; i ++)
  176. cin>>greutate[i]>>profit[i];
  177. for(i = 1 ; i <= n ; i ++)
  178. {
  179. for(j=1;j<=GMax ; j++)
  180. if(greutate[i] > j)
  181. C[i][j]=C[i-1][j];
  182. else
  183. C[i][j]=max(C[i-1][j], C[i-1][j-greutate[i]] + profit[i]);
  184. }
  185. cout<<C[n][GMax];
  186. return 0;
  187. }
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196. #include <iostream>
  197. #include <fstream>
  198. #include <algorithm>
  199. using namespace std;
  200. ifstream f("bete.in");
  201. ofstream g("bete.out");
  202. int n,S,B[100000],v[100000],last[100000],smax;
  203. void determinare(int i, int c)
  204. {
  205. if(i==0)
  206. g<<c<<"\n";
  207. else
  208. {
  209. determinare(i-B[last[i]], c+1);
  210. g<<last[i]<<" ";
  211. }
  212. }
  213. int main()
  214. {
  215. int i,j;
  216. f>>n>>S;
  217. for(i=1;i<=n;i++)
  218. {f>>B[i];
  219. smax+=B[i];}
  220. if(S>smax)
  221. {
  222. g<<"NU";
  223. return 0;
  224. }
  225. v[0]=1;
  226. for(i=1;i<=n;++i)
  227. for(j=smax;j>=0;j--)
  228. if(v[j]&&!v[j+B[i]])
  229. v[j+B[i]]=1,last[j+B[i]]=i;
  230. if(!v[S])
  231. g<<"NU\n";
  232. else
  233. {
  234. g<<"DA\n";
  235. determinare(S, 0);
  236. }
  237. }
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247. #include <iostream>
  248. using namespace std;
  249. const int Inf = 0x3f3f3f3f;
  250. int n, k, G, g[1002], nr[100002];
  251. void Halloween()
  252. {
  253. int i,j;
  254. nr[0] = 0;
  255. for(i=1; i <= n; ++i)
  256. for(j=G-g[i];j>=0;j--)
  257. if(nr[j]!=Inf&&nr[j+g[i]]>nr[j]+1)
  258. nr[j+g[i]]=nr[j]+1;
  259. }
  260. int main()
  261. {
  262. int i;
  263. cin>>n>>G;
  264. for (i=1;i<=G;i++)
  265. nr[i]=Inf;
  266. for (i = 1;i<= n;i++)
  267. cin>>g[i];
  268. Halloween();
  269. if(nr[G]<Inf)
  270. cout<<nr[G];
  271. else
  272. cout<<"NU";
  273. }
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283. #include <fstream>
  284. using namespace std;
  285. ifstream in("cladire2.in");
  286. ofstream out("cladire2.out");
  287. int clad[205][205];
  288. void reconstituire(int i, int j)
  289. {
  290. if(i==1 && j==1)out<<"1 1"<<endl;
  291. else
  292. {if(clad[i-1][j]>clad[i][j-1])
  293. reconstituire(i-1,j);
  294. else reconstituire(i,j-1);
  295. out<<i<<" "<<j<<endl;
  296. }
  297.  
  298. }
  299.  
  300. int main()
  301. {int n,m,j,i;
  302. in>>n>>m;
  303. for(i=1;i<=n;i++)
  304. for(j=1;j<=m;j++)in>>clad[i][j];
  305.  
  306. for(i=1;i<=n;i++)
  307. for(j=1;j<=m;j++)
  308. {if(clad[i-1][j]>clad[i][j-1])clad[i][j]+=clad[i-1][j];
  309. else clad[i][j]+=clad[i][j-1];
  310. }
  311. out<<clad[n][m]<<endl;
  312. reconstituire(n,m);
  313. return 0;
  314.  
  315. }
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324. #include <iostream>
  325. #include <fstream>
  326.  
  327.  
  328.  
  329. using namespace std;
  330.  
  331. ifstream in("taxe.in");
  332. ofstream out("taxe.out");
  333.  
  334.  
  335.  
  336. int m,n,i,j,a[2001][2001];
  337.  
  338.  
  339. int main()
  340. {
  341. in>>n>>m;
  342. for(i=1 ; i<=n ; i++)
  343. for(j=1 ; j<=m ; j++)
  344. in>>a[i][j];
  345.  
  346. for(i=1 ; i<=m ; i++)
  347. {
  348. a[0][i]=20001;
  349. a[n+1][i]=20001;
  350. }
  351.  
  352.  
  353. for(j=m-1 ; j>=1 ; j--)
  354. for(i=1 ; i<=n ; i++)
  355. {
  356. a[i][j]+=min(a[i][j+1],min(a[i-1][j+1],a[i+1][j+1]));
  357. }
  358.  
  359.  
  360.  
  361. int mini=a[1][1];
  362.  
  363. for(i=2 ; i<=n; i++)
  364. if(mini>a[i][1])
  365. mini=a[i][1];
  366.  
  367. out<<mini;
  368.  
  369. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement