Water world
Year is 3030, water is a scare resource.
Civilizations live around glaciers in clusters, with a federal body (identified as F) in center melting glaciers and controlling the water distribution.
Each cluster has need for water for a day and a water storage capacity.
Cluster are connected to each other with a pipe identified by _.
Linked clusters are connected with overflow pipes.
Every time water starts flowing through pipe, the clusters drain their tanks in an instant, as they can use the water flowing to fill the tanks, and federal body sends water till the capacity is full.
Federal body releases water at start of day, cluster uses water at end of day.
In a pipe link like F-C1-C2-C3-C4, when federal water body targets C3, only C3 and nodes before it (here C1,C2,C3) can fill the tank, C4 can fill it only when it’s targeted.
Pipes are flow controlled and water flows in forward direction only.
Calculate the minimum water needed to help the civilizations survive for n days.
Input is multiline. First line is the number of days to survive. Second line the number of clusters followed by their definitions. Next is the number of links in the system, followed by the link definition.
Read the test cases to understand the scenarios better.
Cluster defintion
C1 100 300
here
C1 - cluster name
100 - daily water need
300 - storage capacity
Link definition
F_C1
here
F - is the federal source of pipe
C - is the sink/destination of pipe (cluster tank)
Clusters don’t share water that was allocated to them with others, but water from federal body flows through them if needed.
Input
2
3
C1 100 300
C2 150 300
C3 100 100
3
F_C1
F_C2
C2_C3
Output
1100
In the above on day 1, C1 gets 300, C2 gets 300, C3 gets 100
End of day 1, C1 would have 200, C2 would have 150, C3 would have 0
On start of day 2, C3 needs water.
To supply water to C3, water needs to flow through C2.
C2 would immediately drain the remaining water for other purpose so that it can fill water tank fully again from federal body.
Answers
heyyy mate what is question ask again only meaningful
Answer:
#include<bits/stdc++.h>
using namespace std;
void testfun(map<string, int> mp){
map<string, int>::iterator it = mp.begin();
for(; it!=mp.end(); it++){
cout<<it->first<<":"<<it->second<<" ";
}
cout<<endl;
}
int main()
{
int no, add=0;
cin>>no;
int var;
cin>>var;
map<string, int> d, h;
h["F"] = 0;
while(var--){
string naam;
int a, b;
cin>>naam>>a>>b;
d[naam] = b/a;
h[naam] = b;
add+=b;
}
cin>>var;
while(var--){
string naam, c1="", c2="";
cin>>naam;
int meflux=0;
while(meflux<naam.length()){
if(naam[meflux]=='_'){
c1 = c2;
c2 = "";
meflux++;
continue;
}
c2+=naam[meflux++];
}
h[c2]+= h[c1];
}
//print(days);
//print(storage);
map<string, int>::reverse_iterator a= d.rbegin();
int multiply = 1;
for(; a!=d.rend(); a++ ){
int temperature = a->second*multiply;
if(temperature<no){
add+=(h[a->first]*(no-temperature));
multiply++;
}
}
cout<<add;
}