[pat]1044. Shopping in Mars (25)

https://www.patest.cn/contests/pat-a-practise/1044

题目本身不难,但是用cin,cout时一直过不了。后来受http://www.2cto.com/kf/201303/192972.html启发,改为scanf和printf,特么真的AC了。

这种考察语言特性的题真的是呵呵哒。

#pragma warning(disable:4996)
#include<vector>
#include<algorithm>
#include<iostream>
#include<string>
using namespace std;
vector<int> vv;
int main(){
	int n,m;
	cin>>n>>m;
	for(int i = 0; i < n; i++){
		int a;
		//cin>>a;
		scanf("%d",&a);
		vv.push_back(a);
	}
	
	int sum = 0;
	int start = 0, p = 0;
	int min_loss = 0x7fffffff;
	vector<int> res;
	while(start < vv.size() && p < vv.size()){
		sum += vv[p];
		if(sum > m){
			int loss = sum - m;
			if(loss < min_loss) min_loss = loss;
			sum -= vv[start];
			start++;
			sum -= vv[p];
		}else if(sum == m){
			res.push_back(start+1);
			res.push_back(p+1);
			sum -= vv[start];
			start++;
			p++;
		}else{
			p++;
		}
	}

	sum = 0;
	start = 0;
	p = 0;
	if(res.size() == 0){
		while(start < vv.size() && p < vv.size()){
			sum += vv[p];
			if(sum > m){
				int loss = sum - m;
				if(loss == min_loss) {
					res.push_back(start+1);
					res.push_back(p+1);
					sum -= vv[start];
					start++;
					p++;
				}else{
					sum -= vv[start];
					sum -= vv[p];
					start++;
				}
			}else{
				p++;
			}
		}
	}
	for(int i = 0; i < res.size(); i+=2){
		//cout<<res[i]<<"-"<<res[i+1]<<endl;
		printf("%d-%d\n", res[i],res[i+1]);
	}
	system("pause");
	return 0;
}


你可能感兴趣的:(C++,pat,OJ)