Saturday, October 30, 2010


Problem Links:



Ecology tax

Time Limit: 1000MSMemory Limit: 65536K
Total Submissions: 3267Accepted: 1672


In a big and rich on natural resources country, the government started a campaign to control deforestation. In fact the government is not too interested in how many trees get fallen, but rather how effectively the wood is utilized. So a law was passed which requires every logging company to pay amount of money in proportion to amount of wood that it wastes during operation.

A felling quota on some territory was allotted to a company in this country. Company lorries may only transport logs of exactly L meters long. So when a tree gets sawed into logs, the remainder is wasted.

Trees in this country grow exactly 1 meter per year, so the company may decrease the amount of tax to be paid by simply waiting for some years. Your task is to determine the number of years needed to achieve smallest possible tax. If there is more than one answer, find minimal (earliest) one.


Input file contains number of trees N, length of log L, followed by integers i1 i2 ... iN — heights of each tree.


1 ≤ N ≤ 30000, 1 ≤ L, ik ≤ 30000


Output file must contain single integer — number of years to wait.

Sample Input
Sample Input 1
3 1
10 15 11
Sample Input 2
3 2
5 3 6

Sample Output
Sample Output 1
Sample Output 2


Bold texts appearing in the sample sections are informative and do not form part of the actual data.

Northeastern Europe 2006, Far-Eastern Subregion


Source Code:

[sourcecode language="cpp" collapse="true" padlinenumbers="true"]
//Wed May 5 02:12:32 CDT 2010
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>

using namespace std;

int main(int argc, const char* argv[])
// freopen("", "r", stdin);
// freopen("output.out", "w", stdout);
int N, L;
while (cin >> N >> L)
int year = 0;
for (int i = 0; i < N; i++)
int number;
cin >> number;
number %= L;
if (number > 0 && year + number < L)
year = L - number;
cout << year << endl;
// fclose(stdin);
// fclose(stdout);
return 0;

No comments :