萌新刚学 OI,求助水题
查看原帖
萌新刚学 OI,求助水题
298549
SIXIANG32楼主2022/3/24 21:55

如题,貌似错误十分离谱,就是重复输出一个数字 TAT

#include <iostream> 
#include <queue>
#include <vector>
#include <algorithm> 
#define MAXN 100000
#define int long long
#define QWQ cout << "QWQ" << endl;
using namespace std; 
int a[MAXN + 10];
queue <int> q1, q2, q3;
vector <int> v1, v2;
int n, m, q, u, v, t;

int max(int x, int y) {return ((x > y) ? (x) : (y));}
int fr1() {if(!q1.empty()) return q1.front(); else return -99999999999999999;}
int fr2() {if(!q2.empty()) return q2.front(); else return -99999999999999999;}
int fr3() {if(!q3.empty()) return q3.front(); else return -99999999999999999;}

signed main() {
	freopen("test.txt", "r", stdin); 
	cin >> n >> m >> q >> u >> v >> t;
	for(int p = 1; p <= n; p++)
		cin >> a[p];
	sort(a + 1, a + n + 1);
	for(int p = n; p >= 1; p--) q1.push(a[p]);
	
	int qaq = 0;
	for(int p = 1; p <= m; p++) {
		int top = max(max(fr1(), fr2()), fr3());
		if(top == fr1() && !q1.empty()) q1.pop();
		else if(top == fr2() && !q2.empty()) q2.pop();
		else if(top == fr3() && !q3.empty()) q3.pop();
		
		if(p % t == 0) v1.push_back(top + qaq);
		int f = ((top + qaq) / v * u), t = top + qaq - f;
		q2.push(f - qaq - q);
		q3.push(t - qaq - q);
		qaq += q;
	}

	for(int p = 0; p < v1.size(); p++) cout << v1[p] << ' ';
	cout << endl;
	
	for(int p = 1; p <= n + m; p++) {
		int top = max(max(fr1(), fr2()), fr3());
		if(top == fr1() && !q1.empty()) q1.pop();
		else if(top == fr2() && !q2.empty()) q2.pop();
		else if(top == fr3() && !q3.empty()) q3.pop();
		
		if(p % t == 0) cout << top + qaq << ' ';
	}
}
2022/3/24 21:55
加载中...