Submission #386957

#TimeUsernameProblemLanguageResultExecution timeMemory
386957peijarSails (IOI07_sails)C++17
55 / 100
25 ms1912 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;

const int MAX = 1e5+1;

int nbAHauteur[MAX];
int nbPeutSurHauteur[MAX];

signed main(void)
{
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);

	int nbPoteaux;
	cin >> nbPoteaux;
	int nbRestants(0);
	for (int iPoteau = 0; iPoteau < nbPoteaux; ++iPoteau) 
	{
		int hauteur, aMettre;
		cin >> hauteur >> aMettre;
		nbAHauteur[hauteur]++;
		nbRestants += aMettre;
		nbPeutSurHauteur[hauteur] += aMettre;
	}

	int sol(0);
	int nbPoteauxDispo = 0;
	int nbDrapeauxDispo = 0;
	for (int iHauteur(MAX-1); iHauteur; --iHauteur)
	{
		nbPoteauxDispo += nbAHauteur[iHauteur];
		nbDrapeauxDispo += nbPeutSurHauteur[iHauteur];

		int moy = (nbRestants + iHauteur - 1) / iHauteur;
		int placeEtage = min({moy, nbPoteauxDispo, nbDrapeauxDispo});
		nbDrapeauxDispo -= placeEtage;
		nbRestants -= placeEtage;
		sol += placeEtage * (placeEtage - 1) / 2;
	}
	assert(!nbRestants);
	cout << sol << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...