Yandexでの倏のむンタヌンシップのテスト割り圓おに合栌した方法

画像

こんにちはHabr、今日は、Yandexでの倏のむンタヌンシップのテスト課題に合栌した方法に぀いおお話したす。 この出版物は、初心者開発者、Olympiadプログラミングの愛奜家、C ++やJavaに無関心でない人、たたは忙しい䞀日の埌に興味深い蚘事を読みたい人に圹立ちたす。

この蚘事に䜕を期埅したすか


はじめに


Yandexでのむンタヌンシップの遞択システムに詳しくない人のために、簡単に説明したす。 倏の数か月前のYandexのりェブサむトで、仕事をしたい郚門Yandex.Disk、Yandex.Alisaなどの初心者デベロッパヌ向けの空垭が発衚されたした。 参照により、あなたはどこで勉匷しおいるか、䜕をしおいるのか、仕事の経隓は䜕であったのか、論文に぀いお䜕を曞いたのかなどのフォヌムに蚘入する必芁がありたす。 フォヌムぞの蚘入埌、テストタスクがメヌルに送信されたす。テストタスクは、この手玙を受け取った瞬間から1週間以内の任意の日に6時間で完了したす。

今回は遞ぶのが難しかったので、ほが最終日になりたした。 すべおの理由は、どのようなテストタスクを期埅すべきかわからなかったからです。 倚くの蚘事を読み終えた埌、Yandexがむンタヌンシップにどのようなタスクを蚭定するかに぀いおの単䞀の䟋やアドバむスは芋぀かりたせんでした。 それが、私がこの蚘事を曞くこずにした理由です。 これらの問題に察する正しい解決策を提䟛するのではなく、割り圓おられた6時間でなんずかなるこずしかできたせん。

テストタスクには、被隓者が異なり、耇雑さが異なる6぀のタスクがありたした。 時間ず浮動小数点数のフォヌマットに関するグラフ、線、動的プログラミング、およびアドホックに関するタスクがありたした。

タスク1.゚ラヌ


職務条件
りェブサむトを維持し、新たな問題を远跡したす。 クラむアントは、システムに投皿を远加しようずした埌に゚ラヌを受け取りたした。 この゚ラヌが発生したサヌバヌを把握する必芁がありたす。

n個のサヌバヌがあり、それらのi番目にaiパヌセントの芁求があり、そのうち2パヌセントが倱敗したす。 サヌバヌごずに、゚ラヌが発生した確率を芋぀けたす。

入力圢匏
入力ファむルの最初の行には、1぀の敎数n1≀n≀100-サヌバヌの数が含たれおいたす。

次のn行にはそれぞれ、2぀の敎数ai bi0≀ai、bi≀100が含たれたす-リク゚ストがi番目のサヌバヌに送信される確率パヌセントず、パヌセント゚ラヌがi番目のサヌバヌで発生する確率。

すべおのaiの合蚈が100であり、システムで゚ラヌが発生する可胜性があるこずが保蚌されおいたす。

出力圢匏
n行を印刷したす。 各行には、1぀の実数0≀pi≀1-察応するサヌバヌで゚ラヌが発生した確率を含める必芁がありたす。

各回答の絶察誀差たたは盞察誀差は10-9を超えおはなりたせん。
䟋1
入る

2
50 1
50 2
おわりに
0.333333333333
0.666666666667

䟋2
入る

3
10 100
30 10
60 2
おわりに
0.704225352113
0.211267605634
0.084507042254

この問題を解決するために、Javaを䜿甚するこずにしたした。

挔算アルゎリズムは非垞に単玔です。n個の堎合にa、bを読み取り、a ずbを乗算し、乗算の結果をarr [i]に保存し、結果を倉数totalに合蚈しお100を蚈算したす。
出力するには、arr [i]を100で割るだけです。

解決策
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Locale; import java.util.StringTokenizer; public class Main { public static void main(String[] args)throws IOException { Locale.setDefault(Locale.US);//     (0.3333,  0,333) String line; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //Buffered Reader     Scanner,      ,      StringTokenizer tk;//       int n = Integer.parseInt(br.readLine()); int arr[] = new int[n]; int total = 0; for(int i = 0; i< n;++i) { line = br.readLine(); tk = new StringTokenizer(line); int a = Integer.parseInt(tk.nextToken()); int b = Integer.parseInt(tk.nextToken()); arr[i] = (a*b); total += arr[i]; } for(int i = 0; i< n;++i) { System.out.printf("%.12f\n", (double)arr[i]/ total); } } } 


それだけです、それは私が完党に解決するこずができた最初ず最埌のタスクでした。 残りのタスクは、残念ながら時間がありたせんでした。私はリラックスしお、埌続のすべおのタスクが同じレベルになるず考えおいたためです。 悲しいかな、これは間違っおいるこずが刀明したした。 次のタスクのためにあなたず私のコヌドを䜜成しようずしたす。

タスク2.ミヌティング


職務条件
倧声で話し合うこずで職堎の同僚に迷惑をかけないようにするために、圌らは䞀定の時間の予玄を取り、䌚話を予玄したす。 予玄時には、䌚議の日時、䌚議の期間、参加者のリストを指定する必芁がありたす。 参加者の1人が同時に2぀の䌚議を開催する堎合、䌚議は他の䌚議ず重耇する人のリストの衚瀺で予玄が拒吊されたす。 このようなシステムのプロトタむプを実装する必芁がありたす。

入力圢匏
入力ファむルの最初の行には、1぀の数倀n1≀n≀1000-芁求の数が含たれおいたす。

次のn行には、1行に1぀ず぀ク゚リが含たれたす。 ク゚リには2぀のタむプがありたす。

APPOINT日䞭時間k names1 names2 ... namesk
曜日名を印刷
日-2018幎の日数1≀日≀365

time-䌚議時間、HHMM圢匏の文字列08≀HH≀21、00≀MM≀59

期間-分単䜍の䌚議の期間15≀期間≀120

k-䌚議の参加者の数1≀k≀10

namesi、name-参加者の名前、小文字のラテン文字で構成される文字列1≀| name |≀20。 すべおの同僚には䞀意の名前がありたす。 さらに、1぀の䌚議の参加者間で、1぀の名前が2回怜出されるこずはありたせん。

出力圢匏
予定を䜜成できる堎合最初の皮類の芁求、[OK]を印刷したす。

それ以倖の堎合、最初の行にFAILを出力し、次の行に、䌚議の時間が他の䌚議ず亀差する参加者の名前のリストを、名前がリク゚ストで䞎えられた順に入力したす。

2番目のタむプのリク゚ストの堎合、この日ず参加者に察しお、その日に珟圚発生しおいるすべおのむベントのリストを時系列で、行ごずに1぀の圢匏で衚瀺したす。

HHMM期間names1 names2 ... namesk

参加者の名前は、䌚議の元の説明ず同じ順序で続きたす。 この人にこの日にむベントがない堎合、䜕も衚瀺する必芁はありたせん。
䟋1
入る
7
APPOINT 1 12:30 30 2アンドレむ・アレックス
APPOINT 1 12:00 30 2アレックスセルゲむ
APPOINT 1 12:59 60 2アレックスアンドレむ
プリント1アレックス
プリント1アンドレむ
1セルゲむの印刷
プリント2アレックス
おわりに
わかった
わかった
䞍合栌
アレックス・アンドレむ
12:00 30アレックスセルゲむ
12:30 30アンドレむ・アレックス
12:30 30アンドレむ・アレックス
12:00 30アレックスセルゲむ

この問題の解決策を考えるのに倚くの時間を費やし、倚くのオプションを詊したしたが、時間+日+人の数を最も効果的に詰め蟌む方法を決めたせんでした。 構造䜓を曞きたかった{int day; int time_ms; string people [];}、しかしそれはメモリ䜿甚量が非効率的です。

別のオプションは、すべおの曜日ず時間を線圢に衚し、3぀の倉数を保存する構造䌚議を䜜成するこずです-䌚議の開始日* 24 * 60時間* 60 +分、䌚議の終了開始+期間、この䌚議の人々の名前。 この構造のすべおのオブゞェクトは、ベクトルvecにパッケヌゞ化できたす。 次に、新しいアポむントメントを䜜成するずきに、次のステヌトメントが圓おはたるベクトルに存圚する䌚議に䌚議があるかどうかを確認したす。
 vec[i] -> start<= meeting->start && vec[i] -> end >= meeting->start or vec[i] -> start <= meeting->end && vec[i] -> end >= meeting->end 

「はい」の堎合、この時間がかかっおいるず蚀い、そうでない堎合は、ベクトルに新しい芁玠を远加したす。
たた、Pythonのdictを䜿甚しおこの問題を解決しようずしたしたが、他のタスクに倚くの時間を費やしたこずに気付きたした。 6時間の終わりの10分前に文字通りこのタスクに戻りたした。ほずんど考える力がなかったので、時間があるず曞いお、少なくずも䜕かを枡したした。 おそらく、この問題の2番目の解決策だけを完成させたら、OnlineJudgeは受け入れたでしょう。 しかし、私は次のJavaコヌドを枡したした。 安党にスキップできたすが、実際には䜕もしたせん。

解決策
 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class p2 { public static void main(String[] args) throws IOException { String line; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer tk; long unixTime = System.currentTimeMillis() / 1000L; System.out.println(unixTime); int n = Integer.parseInt(br.readLine()); for (int i = 0; i < n; ++i) { line = br.readLine(); tk = new StringTokenizer(line, " :"); String cmd = tk.nextToken(); if (cmd.compareTo("APPOINT") == 0) { int day = Integer.parseInt(tk.nextToken()); int hour = Integer.parseInt(tk.nextToken()); int minute = Integer.parseInt(tk.nextToken()); int duration = Integer.parseInt(tk.nextToken()); int peopleN = Integer.parseInt(tk.nextToken()); String people[] = new String[peopleN]; for (int j = 0; j < peopleN; ++j) { people[j] = tk.nextToken(); } int start = (hour * 60) + minute; int end = start + duration; } } } } 


タスク3.自動補完


職務条件
Arkadyはむンタラクティブなオヌトコンプリヌトシステムを実装したした。これにより、卒業蚌曞を含む倧孊の䜜品のテキストをすばやく入力できるようになりたす。

システムは、すでにテキストにあるすべおの単語を蚘憶したす。 Arkadyが別の単語を入力し、その空でない郚分がすでに入力された単語の正確に1぀のプレフィックスず䞀臎する堎合、特別なキヌの組み合わせを抌すず、入力された郚分に既存の単語がすぐに远加されたす。

たずえば、Arkadyはすでにさたざたなシステムで論文ず自動補完ずいう蚀葉を入力しおいたす。 圌が入力する必芁がある次の単語のいく぀かのオプションを怜蚎しおください。

  • 卒業蚌曞-最初の文字を入力するず、システムは卒業蚌曞の修了を受け入れたすが、適合したせん。
  • 仕事-最初ず2番目の文字を入力した埌、システムは䜕も提䟛したせん。 テキストには珟圚のプレフィックスで始たる2぀の異なる単語がありたすが、3番目の文字を入力した埌は1぀の単語のみが残りたす提案されたオヌトコンプリヌトを受け入れる必芁がありたす。
  • 違い-オヌトコンプリヌトを䜿甚したオプションは、3番目の文字を入力した埌にのみ衚瀺されたすが、今回は提案されたオプションは受け入れられたせん。

Arkadyには、入力した文字の削陀キヌがないため、テキストから文字を削陀できたせん。

Arkadyは、提案された単語がダむダルの始たりである堎合、オヌトコンプリヌトを䜿甚しないこずも決定したしたが、完党には䞀臎したせん。

Arkadyがアルファベット文字に察応するキヌボヌドキヌのキヌストロヌク数を最小限に抑えたい堎合、オヌトコンプリヌト機胜を䜿甚する回数を決定するのに圹立ちたす。

入力圢匏
入力の最初の行には、1぀の敎数n1≀n≀100 000-Arkadyが入力する単語の数が含たれたす。 2行目には、n個の単語si1≀| si |≀1000が含たれたす。 文字列内のすべおの単語は小文字の英字のみで構成され、単䞀のスペヌスで区切られたす。

すべおの単語の合蚈長は1,000,000文字を超えたせん。

出力圢匏
1行に1぀の敎数キヌボヌドの文字キヌのキヌストロヌク数を出力したす。
䟋1
入る
3
こんにちは、こんにちは
おわりに
11
䟋2
入る
5
りんごりんご
おわりに
13
䟋3
入る
5
aaaaa aaaab aaaaa abaaa abaaa
おわりに
22

このタスクは、トヌトロゞヌに申し蚳ありたせんが、実際に行われるこずが刀明したよりもはるかに簡単に思えたした。 その結果、私の決定は完了したせんでした-WAは14回目のテストで出おきたした。 ここでは、どこに間違いがあるのか​​を理解しようずしおも倚くの時間を費やしたしたが、䜕もできたせんでした。 セットデヌタ構造を䜿甚しおこの問題を解決するのは簡単だず思ったので、C ++で曞くこずにしたした。

解決策
 #include <iostream> #include <set> using namespace std; int main() { set<string> myset; string in; int n; cin >> n; int count = 0; for(int i = 0;i<n;++i) { cin>>in; if(myset.empty()) { count += in.length(); myset.insert(in); } else if(myset.find(in) != myset.end()) { //if a word is in set //check if other words in set contain similar chars //count += the greatest common subsequence int max = 0; for(auto e: myset) { int temp = 0; //case when entered sequence is less than element in set if(e == in) { ++count; } if(e.length() > in.length()) { for(int j = 0; j< in.length(); ++j) { if(e[j] == in[j]) { ++temp; } else { break; } } if(temp > max) { max = temp; } } else if(e.length() <= in.length() && e != in) { for(int j = 0; j< e.length(); ++j) { if(e[j] == in[j]) { ++temp; } else { break; } } if(temp > max) { max = temp; } } } count += max; } else if(myset.find(in) == myset.end()) { //case when entered word is not in the set count += in.length(); myset.insert(in); } } cout << count<<endl; return 0; } 


䞀般に、この問題は2぀の倧きなケヌスに分けられたす。新しい単語が導入される単語がセットに含たれないず、すでに入力されおいる単語が入力されるセットに含たれる単語。

2番目のケヌスは他のいく぀かのケヌスに分割され、1。入力単語ず同じ文字シンボルで始たるセットに単語があるかどうか、2。単語サブシヌケンスがセット内の他の単語であるかどうかがチェックされたす。 コヌドでわかるように、それぞれの堎合、count倉数の異なる量のキヌストロヌクが合蚈されたす。

タスク4.チヌムビルディング


職務条件
チヌムビルディングは楜しい集䌚むベントです。 同僚はコンテストやク゚ストに積極的に参加し、䞀緒にゲヌムの難しさを克服したす。 時々、人々は非垞に倢䞭になり、いく぀かの新しい掻動のために圌らを再線成するこずは非垞に困難です。 珟圚、ファシリテヌタヌはすべおの同僚を2぀のチヌムに分けお、同じチヌムの2人がお互いをよく知っおいるようにする必芁がありたす。これは簡単な䜜業ではありたせん。

各人に1぀の頂点が関連付けられおいるグラフが衚瀺されたす。 ゚ッゞu、vは、同僚uが同僚vをよく知っおいるこずを意味したす同時に、同僚vは同僚uをよく知っおいたす。 グラフの頂点を必芁な方法で2぀のセットに分割できるかどうかを確認し、可胜であれば、適切なパヌティションを印刷したす。

入力圢匏
最初の行には、2぀の敎数nずm2≀n≀5000、0≀m≀200000-グラフの頂点の数ず゚ッゞの数が含たれおいたす。

次のm行は、゚ッゞの説明を瀺したす。1察の敎数ab1≀a、b≀n、a≠bは、頂点aずbの間に゚ッゞが存圚するこずを瀺したす。

頂点の各ペアが1぀以䞋の゚ッゞで接続され、頂点がそれ自䜓に接続されおいないこずが保蚌されたす。

出力圢匏
必芁な方法で頂点を分割できない堎合は、-1を印刷したす。

それ以倖の堎合、最初の行に数倀k1≀k <n-パヌティションのいずれかの郚分の頂点の数を出力したす。

次の行にk個の数字-パヌティションのこの郚分の頂点を印刷したす。

次の行では、パヌティションの2番目の郚分の頂点-n-kの数字を印刷したす。

各頂点は、これらのパヌツのいずれか1぀に属しおいる必芁がありたす。
䟋1
入る
3 1
1 2
おわりに
2
1 2
3
䟋1
入る
3 0
おわりに
-1

それから私はすでにパニックに陥り始め、最初の問題を解決した埌に感じた自信は跡圢もなく消えたした。 私はどのタスクに集䞭すべきか分からず、いずれかのタスクの状態を読むこずを急いだ。 パニックに察凊するのに玄20分かかりたした。 これは、コンテストの問題を解決するために壊滅的に倚くのこずです。

ここで、私もセットを䜿甚するこずにしたした。 より正確には、3 Set'ainitial-1からnたでの倀が栌玍される堎所、グラフの最初のリンクが远加されるteamA、teamAに接続されおいないリンク、およびinitialの残りのすべおのリンクが远加されるteamB。

私のアルゎリズムはシンプルですが、明らかにYandexは私にもっず期埅しおいたす。 3番目のケヌスのWA。

決定
 #include<iostream> #include<set> using namespace std; int main() { int people; cin >>people; int pairs; cin >> pairs; set<int> initial; set<int> teamA; set<int> teamB; int a; int b; if(pairs == 0) { cout<<"-1"<<endl; } else { //fill set with people for(int i = 1;i<=people;++i) { initial.insert(i); } for(int i = 0;i<pairs;++i) { cin >> a; cin >> b; // case when a and b aren't in teamB if(initial.find(a) != initial.end() && initial.find(a) != initial.end() && !teamA.empty()) { teamB.insert(a); teamB.insert(b); initial.erase(a); initial.erase(b); } else if(teamB.find(a) == teamB.end() && teamB.find(b) == teamB.end()) { teamA.insert(a); teamA.insert(b); initial.erase(a); initial.erase(b); } else if ((teamA.find(a) != teamA.end() && teamB.find(b) != teamB.end()) or (teamA.find(b) != teamA.end() && teamB.find(a) != teamB.end())) { for(auto e: teamB) { teamA.insert(e); teamB.erase(e); } } } } cout <<"teamA"<< endl; for( auto e: teamA) { cout << e<<" "; } cout <<endl<<"teamB"<< endl; for( auto e: teamB) { cout << e<<" "; } cout << endl; return 0; } 


タスク5.ラむブラリ


職務条件
Kolyaは本を読むのが倧奜きで、毎日図曞通に行きたす。 倕方たでに、圌は昚日よりも正確に1冊以䞊本を読んだ堎合にのみ満足しおいたす。 ただし、残念ながら、土曜日ず日曜日は図曞通が閉鎖されたす。 そのため、Kolyaは毎日仕事に行き、䞀床にk冊の本を取りたす-あなたはもはやルヌルに埓うこずができたせん。 ただし、Kolyaは、以前に撮圱した曞籍から本を配らなかった堎合でも、新しいk本を撮圱できるこずを嬉しく思っおいたす。 Kolyaは、自宅の図曞通にm本の本があるこずも喜んでいたす。

今日は䜕曜日かわかりたす。 Kolyaは最近起きお、今日ちょうど1冊の本を読むようになりたした。 Kolyaは、今日から可胜な限り毎回図曞通に行く堎合、どれくらい満足できたすか 図曞通での本の䟛絊は無限であるず想定できたす。

入力圢匏
入力ファむルの最初の行には3぀の敎数k、m、dが含たれおいたす。1日あたりの図曞通で持ち蟌める本の数の制限、Kolyaの家の本の数、珟圚の曜日1≀k≀109、0≀m≀109、 1≀d≀7。 土曜日ず日曜日は、数字6ず7で瀺されたす。

出力圢匏
1぀の数字を印刷したす-Kolyaが毎日非垞に倚くの本を読んで満足を維持できる期間の最倧日数。
䟋1
入る
4 2 5
おわりに
4
䟋2
入る
4 3 5
おわりに
5

この問題を解決しお、どれだけ芋逃しおいるかに気づきたした
uDebug 。 私の決定は10回目のテストでWAを投げたした。

解決策
 #include<iostream> using namespace std; int main() { int bks; cin >> bks; int lib; cin >> lib; int day; cin >> day; int total = bks + lib; int count = 0; int read = 0; while(true) { ++count; ++read; if(day>=1 && day <= 5) { total -= read; if(total == 0) { break; } else { total += bks; } } else if(day == 6) { total -= read; if(total == 0) { break; } } else if(day == 7) { total -= read; if(total == 0) { break; } day = 0; } ++day; } cout << count; return 0; } 


タスク6.動員


私は基本的にコンテスト䞭にこのタスクを取りたせんでした。 読み取りず出力専甚のコヌドを曞きたした。 コンテストを完了した埌、これ以倖のすべおのタスクを敎理したした。 正盎なずころ、私はただ䜕をする必芁があるかを正確に理解できたせん。 私はあなたのコメントに喜んでいるでしょう。

職務条件
プロゞェクト "Mobilization"がYandexで再び開始されたす 同瀟は、3か月間のトレヌニングのために、モバむル開発に熱心なn人の若者を採甚しおいたす。 プロゞェクトの開始時に、開発の参加者iのスキルがai、管理のスキルがbiずしお評䟡されるテストが実斜されたした。

プロゞェクトの期間䞭、参加者は、開発者ずマネヌゞャヌずいう参加者の数に等しい2぀のチヌムに分割する必芁がありたす。 すべおの参加者がもたらす総利益を最倧化するような方法でこれを行うこずが蚈画されおいたす。 参加者が開発者の圹割を取埗する堎合、圌の利益はai、そうでない堎合はbiになりたす。

しかし、プロゞェクトに関係する人々でさえ、参加者は新しい知識を埗る時間を芋぀けたす 参加者が修了蚌を提出する堎合がありたす。開発たたは管理の参加者iのスキルがdi増加したず蚀われおいたす。 このような堎合、チヌム党䜓を最倧限に掻甚するためにチヌムを改革するこずが有利な堎合がありたすチヌムのサむズを等しく維持する必芁がありたす。

あなたの仕事は、Yandexを支揎するこずであり、参加者によっおもたらされたそれぞれの新しい蚌明曞を怜蚎した埌、チヌムの珟圚の総利益を蚈算したす。

入力圢匏
入力ファむルの最初の行には、番号n2≀n≀2⋅105、nは偶数-プロゞェクト参加者の数が含たれおいたす。 2行目は、n個の敎数ai0≀ai≀109を定矩したす-開発の各参加者のスキル。 同じ圢匏の次の行は、biコントロヌルの参加者のスキルを蚭定したす0≀bi≀109。

次の行には、敎数m1≀m≀105-参加者によっおもたらされた蚌明曞の数が含たれおいたす。 次のm行のそれぞれには、3぀の敎数numi、typei、di1≀numi≀n、1≀typei≀2、1≀di≀104が含たれおいたす-参加者の数、スキルの皮類1-開発、2-管理および察応するスキルの増加の倀。

出力圢匏
新しい蚌明曞の各芁求を凊理した埌、すべおの参加者の珟圚の総利益を印刷したす。
䟋1
入る
4
7 15 3 4
10 10 0 6
3
1 1 4
4 1 6
2 2 10
おわりに
34
35
43

私がなんずか曞いたコヌド
 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class p6 { public static void main(String[] args)throws IOException { String line; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer tk; int n = Integer.parseInt(br.readLine()); int a[] = new int[n]; int b[] = new int[n]; tk = new StringTokenizer(br.readLine()); int aSum = 0; for(int i = 0;i<n;++i) { a[i] = Integer.parseInt(tk.nextToken()); aSum += a[i]; } int bSum = 0; for(int i = 0;i<n;++i) { b[i] = Integer.parseInt(tk.nextToken()); bSum += b[i]; } } } 


たずめ


党䜓ずしお、私はこの経隓が奜きでした。 最善を尜くせなかったのは少し残念です。 しかし、今では、Yandexでのむンタヌンシップのタスクがどのようなものであるかがわかりたした。この蚘事を読んだ埌、あなたも知っおいたす。 この蚘事がおもしろくお、少なくずも少しはお圹に立おば幞いです。 私はコメントや提案を心から喜んでいたす。 この蚘事を曞いおいる間、私はあなたがこれらの問題を解決するためのオプションを共有するこずを期埅したした。

みんなありがずう

Source: https://habr.com/ru/post/J353662/


All Articles