Codeforces 66C

C - Petya and File System

Time Limit:3000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u

Submit Status Practice CodeForces 66C

Appoint description: 
System Crawler  (Nov 8, 2016 10:35:35 PM)

Description

Recently, on a programming lesson little Petya showed how quickly he can create files and folders on the computer. But he got soon fed up with this activity, and he decided to do a much more useful thing. He decided to calculate what folder contains most subfolders (including nested folders, nested folders of nested folders, and so on) and what folder contains most files (including the files in the subfolders).

More formally, the subfolders of the folder are all its directly nested folders and the subfolders of these nested folders. The given folder is not considered the subfolder of itself. A file is regarded as lying in a folder, if and only if it either lies directly in this folder, or lies in some subfolder of the folder.

For a better understanding of how to count subfolders and files for calculating the answer, see notes and answers to the samples.

You are given a few files that Petya has managed to create. The path to each file looks as follows:

diskName:\folder1\folder2\...\ foldern\fileName

  • diskName is single capital letter from the set {C,D,E,F,G}.
  • folder1, ..., foldern are folder names. Each folder name is nonempty sequence of lowercase Latin letters and digits from 0 to 9. (n?≥?1)
  • fileName is a file name in the form of name.extension, where the name and the extension are nonempty sequences of lowercase Latin letters and digits from 0 to 9.

It is also known that there is no file whose path looks like diskName:\fileName. That is, each file is stored in some folder, but there are no files directly in the root. Also let us assume that the disk root is not a folder.

Help Petya to find the largest number of subfolders, which can be in some folder, and the largest number of files that can be in some folder, counting all its subfolders.

Input

Each line of input data contains the description of one file path. The length of each line does not exceed 100, and overall there are no more than 100 lines. It is guaranteed, that all the paths are correct and meet the above rules. It is also guaranteed, that there are no two completely equal lines. That is, each file is described exactly once.

There is at least one line in the input data.

Output

Print two space-separated numbers. The first one is the maximal number of possible subfolders in a folder (including nested folders, nested folders of nested folders, and so on). The second one is the maximal number of files in a folder (including nested files in subfolders). Note that the disks are not regarded as folders.

Sample Input

Input

C:\folder1\file1.txt

Output

0 1

Input

C:\folder1\folder2\folder3\file1.txt

C:\folder1\folder2\folder4\file1.txt

D:\folder1\file1.txt

Output

3 2

Input

C:\file\file\file\file\file.txt

C:\file\file\file\file2\file.txt

Output

4 2

Hint

In the
first sample we have one folder on the "C" disk. It has no subfolders, which is why the first number in the
answer is 0. But this folder contains one file, so the second number of the answer is 1.

In the
second sample we have several different folders. Consider the "folder1" folder on the "C" disk. This folder directly contains
one folder, "folder2". The "folder2" folder contains two more folders —
"folder3" and "folder4". Thus, the "folder1" folder on the "C" drive has exactly 3 subfolders. Also this folder contains two
files, even though they do not lie directly in the folder, but they are located
in subfolders of "folder1".

In the
third example we see that the names of some folders and some subfolders are
identical. Consider the "file"
folder, which lies directly on the "C" disk. That folder contains another "file" folder, which in turn contains another "file" folder, which contains two more
folders, "file" and "file2". Thus, the "file" folder, which lies directly on the
"C" disk, contains 4 subfolders.

题意:

给定一些文件的路径,要求统计出包含最多子目录的目录的包含子目录数量以及包含文件最多的目录的包含文件数量。

分析:

利用map存储路径信息(包含多少子目录和多少文件),每一行都进行倒序遍历即可。

 1 #include <cstdio>
 2 #include <string>
 3 #include <map>
 4 #include <iostream>
 5 using namespace std;
 6 string str;
 7 map<string,int> FILE_RECORDER[10],FOLDER_RECORDER[10];
 8 int main(){
 9     int max1 = 0,max2 = 0;
10     while(cin >> str){
11         int DISK = str[0] - ‘C‘;
12         int FOLDERNUM = 0;
13         for(int i = str.length() ; i >= 3 /*不考虑根目录*/; i--)if(str[i] == ‘\\‘){
14             string now = str.substr(0,i);
15             FOLDER_RECORDER[DISK][now] += FOLDERNUM;
16             // each file is described exactly once.
17             if(FILE_RECORDER[DISK][now] == 0) FOLDERNUM++; // 是新文件
18             FILE_RECORDER[DISK][now]++;
19             max1 = max(max1,FOLDER_RECORDER[DISK][now]);
20             max2 = max(max2,FILE_RECORDER[DISK][now]);
21         }
22     }
23     cout << max1 << " " << max2 << endl;
24     return 0;
25 }

时间: 2024-10-11 06:24:42

Codeforces 66C的相关文章

CodeForces 66C Petya and File System

模拟题,map搞一搞.用了点c11的特性. #include<bits/stdc++.h> using namespace std; typedef map<string,int> Node; map<string,int>::iterator it_id; const int maxnd = 1e4; Node nds[maxnd]; int nds_cnt; #define MP make_pair #define fi first #define se secon

CSUST 8.3 早训

A - Settlers' Training CodeForces - 63B 题意 给你一串数字,相同的数字为一组,每次可以给一组中的一个数字加一,问这一串数字全变成K需要多少步? 题解 模拟 C++代码 /** /*@author Victor /*language C++ */ //#include <bits/stdc++.h> #include<iostream> #include<algorithm> #include<cstdlib> #inc

【codeforces 718E】E. Matvey&#39;s Birthday

题目大意&链接: http://codeforces.com/problemset/problem/718/E 给一个长为n(n<=100 000)的只包含‘a’~‘h’8个字符的字符串s.两个位置i,j(i!=j)存在一条边,当且仅当|i-j|==1或s[i]==s[j].求这个无向图的直径,以及直径数量. 题解:  命题1:任意位置之间距离不会大于15. 证明:对于任意两个位置i,j之间,其所经过每种字符不会超过2个(因为相同字符会连边),所以i,j经过节点至多为16,也就意味着边数至多

Codeforces 124A - The number of positions

题目链接:http://codeforces.com/problemset/problem/124/A Petr stands in line of n people, but he doesn't know exactly which position he occupies. He can say that there are no less than a people standing in front of him and no more than b people standing b

Codeforces 841D Leha and another game about graph - 差分

Leha plays a computer game, where is on each level is given a connected graph with n vertices and m edges. Graph can contain multiple edges, but can not contain self loops. Each vertex has an integer di, which can be equal to 0, 1 or  - 1. To pass th

Codeforces Round #286 (Div. 1) A. Mr. Kitayuta, the Treasure Hunter DP

链接: http://codeforces.com/problemset/problem/506/A 题意: 给出30000个岛,有n个宝石分布在上面,第一步到d位置,每次走的距离与上一步的差距不大于1,问走完一路最多捡到多少块宝石. 题解: 容易想到DP,dp[i][j]表示到达 i 处,现在步长为 j 时最多收集到的财富,转移也不难,cnt[i]表示 i 处的财富. dp[i+step-1] = max(dp[i+step-1],dp[i][j]+cnt[i+step+1]) dp[i+st

Codeforces 772A Voltage Keepsake - 二分答案

You have n devices that you want to use simultaneously. The i-th device uses ai units of power per second. This usage is continuous. That is, in λ seconds, the device will use λ·ai units of power. The i-th device currently has bi units of power store

Educational Codeforces Round 21 G. Anthem of Berland(dp+kmp)

题目链接:Educational Codeforces Round 21 G. Anthem of Berland 题意: 给你两个字符串,第一个字符串包含问号,问号可以变成任意字符串. 问你第一个字符串最多包含多少个第二个字符串. 题解: 考虑dp[i][j],表示当前考虑到第一个串的第i位,已经匹配到第二个字符串的第j位. 这样的话复杂度为26*n*m*O(fail). fail可以用kmp进行预处理,将26个字母全部处理出来,这样复杂度就变成了26*n*m. 状态转移看代码(就是一个kmp

Codeforces Round #408 (Div. 2) B

Description Zane the wizard is going to perform a magic show shuffling the cups. There are n cups, numbered from 1 to n, placed along the x-axis on a table that has m holes on it. More precisely, cup i is on the table at the position x?=?i. The probl