Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

[Lovely]boy^ ^/[Lovely]boy^ ^/USACO/Barn: Difference between revisions

From ZeroWiki
imported>smksyj
No edit summary
(Repair batch-0004 pages from live compare)
 
(2 intermediate revisions by one other user not shown)
Line 11: Line 11:
  vector<int> ret( ar.size() - 1 );
  vector<int> ret( ar.size() - 1 );
  for(int i = 0 ; i < ar.size() - 1 ; ++i)
  for(int i = 0 ; i < ar.size() - 1 ; ++i)
  ret[i] = ar[i+1] - ar[i];
  ret[i] = ar[i+1] - ar[i];
  return ret;
  return ret;
  }
  }
Line 32: Line 32:
  numPivot = iter;
  numPivot = iter;
  for(int i = 0 ; i < iter ; ++i)
  for(int i = 0 ; i < iter ; ++i)
  fin >> ar[i];
  fin >> ar[i];
  fin.close();
  fin.close();
  sort(ar.begin(), ar.end());
  sort(ar.begin(), ar.end());
Line 40: Line 40:
  int getTotal(int numPivot, const vector<int>& ar, const vector<int>& pivots)
  int getTotal(int numPivot, const vector<int>& ar, const vector<int>& pivots)
  {
  {
  int ret = ar[ ar.size() - 1 ] - ar[0];
  int ret = ar[ ar.size() - 1 ] - ar[0];
  for(int i = 0 ; i < pivots.size() ; ++i)
  for(int i = 0 ; i < pivots.size() ; ++i)
  ret -= pivots[i];
  ret -= pivots[i];
  ret += numPivot;
  ret += numPivot;
  return ret;
  return ret;
Line 60: Line 60:


----
----
[[[Lovely]]boy^_^/USACO]
[[[Lovely]boy^_^/USACO]]
 

Latest revision as of 00:37, 27 March 2026

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;

vector<int> getDistance(const vector<int>& ar)
{
	vector<int> ret( ar.size() - 1 );
	for(int i = 0 ; i < ar.size() - 1 ; ++i)
		ret[i] = ar[i+1] - ar[i];
	return ret;
}

vector<int> getPivot(int numPivot, const vector<int>& distance)
{
	vector<int> ret(distance);
	sort(ret.begin(), ret.end(), greater<int>());
	ret.erase(ret.begin() + numPivot - 1, ret.end());
	return ret;
}

vector<int> getDatas(int& numPivot)
{
	int max, iter;
	ifstream fin("barn1.in");
	fin >> numPivot >> max >> iter;
	vector<int> ar(iter);
	if(numPivot > iter)
		numPivot = iter;
	for(int i = 0 ; i < iter ; ++i)
		fin >> ar[i];
	fin.close();
	sort(ar.begin(), ar.end());
	return ar;
}

int getTotal(int numPivot, const vector<int>& ar, const vector<int>& pivots)
{
	int ret = ar[ ar.size() - 1 ] - ar[0];
	for(int i = 0 ; i < pivots.size() ; ++i)
		ret -= pivots[i];
	ret += numPivot;
	return ret;
}

int main()
{
	int numPivot;
	vector<int> data = getDatas(numPivot);
	vector<int> distance = getDistance(data);
	vector<int> pivots = getPivot(numPivot, distance);
	ofstream fout("barn1.out");
	fout << getTotal(numPivot, data, pivots) << endl;
	fout.close();
	return 0;
}

[Lovely]boy^_^/USACO