20180908网易NLP算法工程师机试题(香槟塔)

#include<iostream>

#include<vector>

#include<string>

#include<sstream>

#include<algorithm>

using namespace std;


struct Cup{

int cur;

int vol;

Cup() : cur(0), vol(0){}

};


void parse(string& query, vector<int>& q){

stringstream ss(query);

string num;

while (ss >> num){

q.push_back(atoi(num.c_str()));

}

}


void do_query(vector<Cup>& nums, vector<int>& q){

int pos = q[1] - 1;

cout << nums[pos].cur << endl;

}


void do_water(vector<Cup>& nums, vector<int>& q){

int i = q[1] - 1;

int water = q[2];

while (i < nums.size() && water > 0){

int cur = nums[i].cur + water;

nums[i].cur = min(cur, nums[i].vol);

water = max(0, cur - nums[i].vol);

i++;

}

}


void process(vector<Cup>& nums, vector<int>& q){

if (q.size() == 2){

do_query(nums, q);

}

else{

do_water(nums, q);

}

}


int main(){

int n, m;

cin >> n >> m;

vector<Cup> nums(n);

for (int i = 0; i < n; i++){

cin >> nums[i].vol;

}

cin.ignore();

for (int i = 0; i < m; i++){

string query;

getline(cin, query);

vector<int> q;

parse(query, q);

process(nums, q);

}

system("pause");

return 0;

}


#网易##C++工程师##算法工程师#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务