Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stack>
- using namespace std;
- struct Wiadro {
- public:
- int promien;
- int wysokosc;
- int podloga;
- };
- int main()
- {
- int ileZbiorow;
- scanf("%d", &ileZbiorow);
- for(int i = 0; i < ileZbiorow; i++){
- int licznik=0,ileWiader=0,maxWymiar=0;
- stack<Wiadro> wieza;
- scanf("%d", &ileWiader);
- for(int j=0;j<ileWiader;j++){
- Wiadro wiadro;
- scanf("%d", &wiadro.promien);
- scanf("%d", &wiadro.wysokosc);
- int max=-1, suma;
- if(licznik > 0){
- if (wieza.top().promien > wiadro.promien) {
- wiadro.podloga = wieza.top().podloga;
- wieza.push(wiadro);
- licznik++;
- }
- else {
- while(licznik > 0 && wieza.top().promien <= wiadro.promien){
- suma = wieza.top().wysokosc + wieza.top().podloga;
- if(suma>max) max = suma;
- wieza.pop();
- licznik--;
- }
- wiadro.podloga = max;
- wieza.push(wiadro);
- licznik++;
- }
- } else {
- wiadro.podloga = 0;
- licznik++;
- wieza.push(wiadro);
- }
- suma=wiadro.podloga+wiadro.wysokosc;
- if(maxWymiar<suma) maxWymiar=suma;
- }
- printf("%d \n", maxWymiar);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement