Untitled
By: a guest | Mar 20th, 2010 | Syntax:
C++ | Size: 1.60 KB | Hits: 68 | Expires: Never
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <vector>
#include <algorithm>
using namespace std;
struct dl {
int time;
int speed;
int size;
};
bool sort_rows(dl one, dl two) {
return one.time < two.time;
}
int main() {
ifstream in ("downloads.in");
ofstream out ("downloads.out");
vector <struct dl> files;
int N;
in >> N;
int totalT = 0;
int totalF = 0;
int bandwidth = 0;
int Speed, Time;
//files[file][0 = speed, 1 = time]
for (int i = 0; i < N; i++) {
dl Dl;
in >> Speed >> Time;
Dl.speed = Speed;
Dl.time = Time;
files.push_back(Dl);
// in >> files[i][0] >> files[i][1];
totalF++;
bandwidth += Speed;
}
// cout << totalF << endl;
sort (files.begin(), files.end(), sort_rows);
for (int i = 0; i < totalF; i++) {
totalT += files.at(i).time;
if (i != totalF - 1) {
/* cout << files.at(i).speed << endl;*/
// cout << (files.at(i + 1).speed + files.at(i).speed) << endl;
dl& nextfile = files.at(i + 1);
dl& thisfile = files.at(i);
thisfile.size = (thisfile.time - totalT) * thisfile.speed;
nextfile.size = nextfile.time * nextfile.speed;
int bytesDled = thisfile.time * nextfile.speed;
// cout << nextfile.size << " " << bytesDled << endl;
nextfile.time = (nextfile.size - bytesDled) / (nextfile.speed + thisfile.speed);
nextfile.speed = (nextfile.speed + thisfile.speed);
//
//cout << files.at(i+1).time << endl;
}
}
out << totalT << endl;
}