疑似新(假)做法但AC了
查看原帖
疑似新(假)做法但AC了
380042
piggy123楼主2021/9/6 15:19
#include <iostream>
#include <cmath>
using namespace std;

int main() {
	long long m,s,t,loc=0,second=0;
	bool flag=0;
	cin >> m >> s >> t;
	if (m%2)m-=1; // 这就离大谱
	loc+=m/10*60;
	second+=m/10;
	m%=10;
	while (loc-60>=s||second>t) {
		loc-=60;
		second--;
	}

		if (ceil((10-m)*1.0/4)+1>ceil((s-loc+1)*1.0/17)||ceil((10-m)*1.0/4)+1+second>t) { 
			while (loc<s&&second<t){
				loc+=17;
				second++;
			}

		} else if (m==2||m==6) { 
			second+=ceil((10-m)*1.0/4)+1;
			m=m+4*ceil((10-m)*1.0/4)-10;
			loc+=60;
		} else if (ceil((10-m)*1.0/4)+1+second<t&&s-loc<=60) {
			second+=ceil((10-m)*1.0/4)+1;
			loc+=60;
		} else if (ceil((20-m)*1.0/4)+2>ceil((s-loc+1)*1.0/17)||ceil((20-m)*1.0/4)+2+second>t) {
			while (loc<s&&second<t){
				loc+=17;
				second++;
			}
			
		} else if (m==0||m==4||m==8) { 
			second+=ceil((20-m)*1.0/4)+2;
			m=m+4*ceil((20-m)*1.0/4)-20;
			loc+=120;
		}
	}
	if (loc>=s) {
		cout << "Yes" << endl;
		cout << second << endl;
	} else {
		cout << "No" << endl;
		cout << loc << endl;
	}

	return 0;
}

2021/9/6 15:19
加载中...