Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define vout(v) for(int i=0;i<v.size();i++){ cout<<a[v[i]].p; if(i==v.size()-1) cout<<endl; else cout<<" ";}
- struct info
- {
- string p;
- int at, bt;
- };
- bool cmp1(struct info a, struct info b){
- return a.at<b.at;
- }
- bool cmp2(struct info a, struct info b){
- return a.bt<b.bt;
- }
- struct info a[11111];
- int n;
- vector<int> q;
- void srt()
- {
- for(int i=0;i<q.size();i++){
- for(int j=i+1;j<q.size();j++){
- if(a[q[i]].bt>a[q[j]].bt){
- swap(q[i],q[j]);
- }
- }
- }
- }
- int main()
- {
- freopen("in.txt","r", stdin);
- freopen("out.txt","w", stdout);
- cin>>n;
- for(int i=0;i<n;i++){
- cin>>a[i].p>>a[i].at>>a[i].bt;
- }
- sort(a,a+n,cmp1);
- sort(a+1,a+n,cmp2);
- vector<int> gc;
- map<string,bool>mp;
- vector<int> v[111];
- q.push_back(0);
- int timer=a[0].at;
- int vi=0;
- mp[a[0].p]=1;
- while(q.size()>0){
- srt();
- int tp=q[0];
- q.erase(q.begin());
- gc.push_back(tp);
- v[vi].push_back(timer);
- timer+=a[tp].bt;
- v[vi].push_back(timer);
- vi++;
- for(int i=0;i<n;i++){
- if(mp[a[i].p]!=1){
- if(a[i].at<=timer){
- q.push_back(i);
- mp[a[i].p]=1;
- }
- }
- }
- }
- cout<<"Gantt Chart"<<endl;
- for(int i=0;i<gc.size();i++){
- cout<<a[gc[i]].p<<" ";
- }
- cout<<endl<<endl;
- vector<int > wt;
- vector<int> tt;
- for(int i=0;i<n;i++){
- int temp=v[i][0]-a[i].at;
- wt.push_back(temp);
- }
- for(int i=0;i<n;i++){
- int temp=v[i][1]-a[i].at;
- tt.push_back(temp);
- }
- cout<<"P\tWT\tTT"<<endl;
- for(int i=0;i<n;i++){
- cout<<a[i].p<<"\t"<<wt[i]<<"\t"<<tt[i]<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement